Dans mon GOPATH j'ai quelque chose comme ça:
/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
.
Lorsque 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
Cela signifie-t-il que tout fichier appartenant à package main
doit être placé dans son propre dossier? Si oui, quelle en est la raison?
Oui, chaque paquet doit être défini dans son propre répertoire.
La structure source est définie dans Comment écrire un code Go .
Un package est un composant que vous pouvez utiliser dans plusieurs programmes, que vous pouvez publier, importer, extraire d'une URL, etc. Il est donc logique qu'il ait son propre répertoire autant qu'un programme peut en avoir un.
En outre, si vous essayez simplement de diviser le fichier main.go en plusieurs fichiers, nommez simplement les autres fichiers "package main" tant que vous définissez uniquement la fonction principale dans l'un de ces fichiers, aller.
Assurez-vous que votre package est installé dans votre répertoire $GOPATH
ou déjà dans votre espace de travail/package.
Par exemple: si votre $GOPATH = "c:\go"
, assurez-vous que le paquet à l'intérieur de C:\Go\src\pkgName