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 mainpacchetto, e il secondo tende a mettere tutto in una srcdirectory. 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 mypacked 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 libsottodirectory. 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 libdirectory 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 libseparare le interfacce pubbliche da quelle private.
Fare le cose in questo modo ti darà un bel percorso di importazione, myproj.org/mypackper riutilizzare il codice in altri progetti. Se si utilizza, libi 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 mainsenza dover creare progetti separati. eg main/myfoo/myfoo.goe main/mybar/mybar.go.