Deux packages peuvent-ils résider dans le même répertoire ?
Lors du développement de projets nécessitant à la fois une bibliothèque et une interface de ligne de commande (CLI), il est Il est courant de rencontrer des conflits entre deux packages existant dans le même répertoire. En raison de l'exigence du compilateur Go pour un package nommé "main" avec un "func main" comme point d'entrée, il semble impossible d'avoir des packages séparés pour la bibliothèque et la CLI.
Solution : Structure des packages imbriqués
Cependant, il existe une solution de contournement à ce problème en déplaçant les deux packages dans un nouveau dossier dans le même répertoire que le fichier "main.go". La clé est de s'assurer que le nouveau package est importé à partir du chemin correct dans "$GOPATH".
Exemple :
Considérez la structure de répertoires mise à jour :
whatever.io/ myproject/ a/ # New folder a.go main.go
Dans "main.go", importez le nouveau package depuis son chemin imbriqué :
package main import ( "../myproject/a" ) func main() { a.Hello() }
Dans "a.go", définissez les fonctions de la bibliothèque :
package a import ( "fmt" ) func Hello() { fmt.Println("hello from a") }
Construire et exécuter :
Maintenant, vous pouvez créer et exécuter le projet avec succès :
go run main.go # Prints "hello from a" go build # Creates the executable without errors
Cette solution vous permet d'avoir à la fois une bibliothèque (package "a") et une CLI (package "main") dans le même répertoire, résolvant ainsi le conflit provoqué par la présence de deux packages avec le même nom dans le même répertoire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!