Znalazłem konwencje nazewnictwa pakietów w Go: bez podkreślenia między słowami, wszystkie małe litery.
Czy ta konwencja dotyczy również nazw plików?
Czy umieszczasz również jedną strukturę w jednym pliku, tak jak w przypadku klasy Java, a następnie nazywasz plik po strukturze?
Obecnie jeśli mam struct WebServer, umieszczam go w pliku web_server.go.
go
naming-conventions
david
źródło
źródło
Odpowiedzi:
Jest kilka wskazówek, których należy przestrzegać.
_test.go
są kompilowane i uruchamiane tylko przezgo test
narzędzie.name_linux.go
Będą budować tylko na Linuksie,name_amd64.go
będą budować tylko na amd64. To jest to samo, co//+build amd64
linia na początku plikuWięcej informacji można znaleźć w dokumentacji
go build
narzędzia: https://golang.org/pkg/go/build/źródło
unix
iothers
. Np. Mogę zrobić dwa plikifile_windows.go
ifile_others.go
. To działa dobrze. Ale dlafile_unix.go
ifile_others.go
to nie działa. Nie chcę tworzyć ośmiu plikówdarwin freebsg linux openbsd netbsd dragonfly solaris android
.Oprócz odpowiedzi udzielonej przez JimB , zwykłe nazwy plików są pisane małymi literami, są krótkie i bez podkreślenia ani spacji. Ogólnie nazwy plików są zgodne z tą samą konwencją, co nazwy pakietów. Zobacz sekcję nazw pakietów w Effective Go .
Dobry przykład można znaleźć w pakiecie strconv .
źródło
mycommandsub1command.go
lubmy_command_sub1command.go
, a co zmycommandVO
Go jest dość liberalne, jeśli chodzi o sposób organizacji kodu w pakiecie, zwykle jest to wszystko, co poprawia czytelność i zrozumienie kodu. Najlepszym sposobem, aby dowiedzieć się, jak to się robi, jest przestudiowanie mistrzów, czyli przejrzenie standardowej biblioteki:
http://golang.org/src/pkg/
Są jednak dwie zasady, które przychodzą mi do głowy. Podczas określania kodu, który ma zostać skompilowany dla różnych platform, jako sufiksu należy użyć nazwy platformy:
Również jeśli masz plik o nazwie
server.go
, testy dla tego pliku będą w formacieserver_test.go
.źródło
_front
,_writer
lub_bits
jako istotnych przyrostków w przyszłości wtedy!go
narzędzie jest bardzo restrykcyjne jeśli chodzi o strukturę pakietu (jest to jedna z moich ulubionych rzeczy w języku). Preferuje pewne bardzo specyficzne konwencje (jeden pakiet na folder [z co najmniej jednym wyjątkiem], pakiet folderu ma taką samą nazwę jak folder [z co najmniej jednym wyjątkiem], pełna ścieżka importu pakietu odpowiada ścieżce względnej z$GOPATH
, niektóre pliki są traktowane inaczej w zależności od formatu nazwy itp.)Go is quite liberal in terms of how you organise your code within a package
. Go nie jest liberalne, jest dość restrykcyjne. Ale to dobra rzecz.Zwykle podkreślenia w nazwach plików są używane do przypisania kodu platformy / architektury, na przykład:
sqrt_386.s
będą odczytywane przez kompilator tylko na procesorach 32-bitowych,sqrt_amd64.s
na amd64 itd.Może to być dowolna z prawidłowych wartości
GOOS
i / lubGOARCH
( ref .file_windows_amd64.go
zostanie skompilowany tylko na win64.źródło