J'ai étudié un certain nombre de projets Go et il y a pas mal de variations. Vous pouvez en quelque sorte dire qui vient de C et qui vient de Java, car le premier vidage à peu près tout dans le répertoire racine des projets dans un main
package, et le dernier a tendance à tout mettre dans un src
répertoire. Cependant, aucun n'est optimal. Chacun a des conséquences car il affecte les chemins d'importation et la manière dont les autres peuvent les réutiliser.
Pour obtenir les meilleurs résultats, j'ai élaboré l'approche suivante.
myproj/
main/
mypack.go
mypack.go
Où mypack.go
est package mypack
et main/mypack.go
est (évidemment) package main
.
Si vous avez besoin de fichiers de support supplémentaires, vous avez deux choix. Soit les conserver tous dans le répertoire racine, soit placer les fichiers de support privés dans un lib
sous - répertoire. Par exemple
myproj/
main/
mypack.go
myextras/
someextra.go
mypack.go
mysupport.go
Ou
myproj.org/
lib/
mysupport.go
myextras/
someextra.go
main/
mypack.go
mypage.go
Ne placez les fichiers dans un lib
répertoire que s'ils ne sont pas destinés à être importés par un autre projet. En d'autres termes, s'il s'agit de fichiers de support privés . C'est l'idée derrière avoir lib
--pour séparer les interfaces publiques des interfaces privées.
Faire les choses de cette façon vous donnera un bon chemin d'importation, myproj.org/mypack
pour réutiliser le code dans d'autres projets. Si vous utilisez lib
alors les fichiers de support internes auront un chemin d'importation qui indique que, myproj.org/lib/mysupport
.
Lors de la construction du projet, utilisez main/mypack
, par exemple go build main/mypack
. Si vous avez plusieurs exécutables, vous pouvez également séparer ceux qui se trouvent sous main
sans avoir à créer des projets distincts. par exemple main/myfoo/myfoo.go
et main/mybar/mybar.go
.