Ho studiato una serie di progetti Go e ci sono molte variazioni. Puoi dire chi proviene da C e chi proviene da Java, poiché il primo dump praticamente tutto nella directory root dei progetti in un main
pacchetto, e il secondo tende a mettere tutto in una src
directory. Nessuno dei due è comunque ottimale. Ognuno ha conseguenze perché influenzano i percorsi di importazione e come gli altri possono riutilizzarli.
Per ottenere i migliori risultati ho elaborato il seguente approccio.
myproj/
main/
mypack.go
mypack.go
Dove mypack.go
è package mypack
ed main/mypack.go
è (ovviamente) package main
.
Se hai bisogno di ulteriori file di supporto hai due possibilità. Conservali tutti nella directory principale o inserisci i file di supporto privati in una lib
sottodirectory. Per esempio
myproj/
main/
mypack.go
myextras/
someextra.go
mypack.go
mysupport.go
O
myproj.org/
lib/
mysupport.go
myextras/
someextra.go
main/
mypack.go
mypage.go
Metti i file in una lib
directory solo se non sono destinati ad essere importati da un altro progetto. In altre parole, se sono file di supporto privati . Questa è l'idea alla base dell'avere - di lib
separare le interfacce pubbliche da quelle private.
Fare le cose in questo modo ti darà un bel percorso di importazione, myproj.org/mypack
per riutilizzare il codice in altri progetti. Se si utilizza, lib
i file di supporto interni avranno un percorso di importazione indicativo di ciò myproj.org/lib/mysupport
,.
Quando si costruisce il progetto, utilizzare main/mypack
, ad es go build main/mypack
. Se disponi di più di un eseguibile, puoi anche separarli main
senza dover creare progetti separati. eg main/myfoo/myfoo.go
e main/mybar/mybar.go
.