Przebadałem wiele projektów Go i istnieje spora różnorodność. Możesz powiedzieć, kto pochodzi z C, a kto z Javy, ponieważ pierwszy zrzut prawie wszystko w katalogu głównym projektów w main
pakiecie, a drugi zwykle umieszcza wszystko wsrc
katalogu. Jednak żadne nie jest optymalne. Każda z nich ma konsekwencje, ponieważ wpływa na ścieżki importu i sposób, w jaki inni mogą z nich korzystać ponownie.
Aby uzyskać najlepsze wyniki, opracowałem następujące podejście.
myproj/
main/
mypack.go
mypack.go
Gdzie mypack.go
jest package mypack
i main/mypack.go
jest (oczywiście) package main
.
Jeśli potrzebujesz dodatkowych plików pomocniczych, masz dwie możliwości. Albo zachowaj je wszystkie w katalogu głównym, albo umieść prywatne pliki pomocy w lib
podkatalogu. Na przykład
myproj/
main/
mypack.go
myextras/
someextra.go
mypack.go
mysupport.go
Lub
myproj.org/
lib/
mysupport.go
myextras/
someextra.go
main/
mypack.go
mypage.go
Pliki umieść w lib
katalogu tylko wtedy, gdy nie są przeznaczone do zaimportowania przez inny projekt. Innymi słowy, jeśli są to prywatne pliki wsparcia. Taki jest pomysł posiadanialib
- w celu oddzielenia interfejsów publicznych od prywatnych.
Robienie tego w ten sposób da ci dobrą ścieżkę importu, myproj.org/mypack
aby ponownie wykorzystać kod w innych projektach. Jeśli używasz lib
wtedy wewnętrzne pliki pomocnicze będzie miał ścieżkę importu, który wskazuje, że myproj.org/lib/mysupport
.
Budując projekt, użyj main/mypack
np go build main/mypack
. Jeśli masz więcej niż jeden plik wykonywalny, możesz również oddzielić je od siebie main
bez konieczności tworzenia osobnych projektów. np . main/myfoo/myfoo.go
i main/mybar/mybar.go
.