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 mainpakiecie, 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.gojest package mypacki main/mypack.gojest (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 libpodkatalogu. 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 libkatalogu 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/mypackaby ponownie wykorzystać kod w innych projektach. Jeśli używasz libwtedy wewnętrzne pliki pomocnicze będzie miał ścieżkę importu, który wskazuje, że myproj.org/lib/mysupport.
Budując projekt, użyj main/mypacknp go build main/mypack. Jeśli masz więcej niż jeden plik wykonywalny, możesz również oddzielić je od siebie mainbez konieczności tworzenia osobnych projektów. np . main/myfoo/myfoo.goi main/mybar/mybar.go.