Erreur “impossible de charger le package: package my_prog: on trouve des paquets my_prog et de la main”
Dans mon GOPATH j'ai quelque chose comme ceci:
/bin/
/pkg/
/src/
/src/my_prog/
/src/my_prog/main.go
/src/my_prog/d_interface.go
/src/my_prog/d_struct_that_implements_the_interface.go
Dans main.go
j'ai package main
, dans d_interface.go
et d_struct_that_implements_the_interface.go
j'ai package my_prog
.
Quand j'essaie de go build my_prog
j'obtiens l'erreur suivante:
can't load package: package my_prog: found packages my_prog (d_interface.go) and main (main.go) in C:\dev\Code\Go\src\my_prog
Est-ce à dire que tout fichier qui appartient à package main
devrait aller dans son propre dossier? Si oui, quelle en est la raison?
Vous devez vous connecter pour publier un commentaire.
Oui, chaque colis doit être définie dans son propre répertoire.
La source de la structure est définie dans Comment Écrire Go Code.
Un package est un composant que vous pouvez utiliser en plus d'un programme, que vous pouvez publier, l'importation, l'obtenir à partir d'une URL, etc. Si elle fait sens pour lui d'avoir son propre répertoire autant qu'un programme peut avoir un répertoire.
main
c'est un programme. Si le paquet n'est pasmain
c'est une bibliothèque. Si vous les mettez dans le même chemin et installer ce chemin, sont que vous essayez d'installer le programme ou à la bibliothèque?/src/my_prog/
et la my_prog paquet dans/src/my_prog/my_prog/
œuvres.Aussi, si vous essayez de faire est de briser la main.allez fichier en plusieurs fichiers, puis il suffit de nommer les fichiers de package principal" tant que vous ne l'définir la fonction principale dans l'un de ces fichiers, vous êtes bon pour aller.
Assurez-vous que votre paquet est installé dans votre
$GOPATH
répertoire ou déjà à l'intérieur de votre espace de travail/paquet.Par exemple: si votre
$GOPATH = "c:\go"
, assurez-vous que le paquet à l'intérieurC:\Go\src\pkgName