Я смог найти соглашения для именования пакетов в Go: без подчеркивания между словами, все в нижнем регистре.
Применяется ли это соглашение и к именам файлов?
Вы также помещаете одну структуру в один файл, как если бы вы это делали для класса java, а затем называете файл после структуры?
В настоящее время, если у меня есть структура WebServer, я помещаю ее в файл web_server.go.
go
naming-conventions
Дэвид
источник
источник
Ответы:
Есть несколько рекомендаций, которым нужно следовать.
_test.go
только компилируются и запускаютсяgo test
инструментом.name_linux.go
будут построены только на Linux,name_amd64.go
будут построены только на amd64. Это то же самое, что и//+build amd64
строка вверху файла.Дополнительную информацию см. В документации по
go build
инструменту: https://golang.org/pkg/go/build/источник
unix
иothers
. Например, я могу сделать два файлаfile_windows.go
иfile_others.go
. Работает нормально. Но для этогоfile_unix.go
иfile_others.go
не работает. Я не хочу создавать восемь файловdarwin freebsg linux openbsd netbsd dragonfly solaris android
.В дополнение к ответу, предоставленному JimB , обычные имена файлов должны быть строчными, короткими и без какого-либо подчеркивания или пробела. Как правило, имена файлов соответствуют тому же соглашению, что и имена пакетов. См. Раздел « Имена пакетов » в Effective Go .
См. Хороший пример в пакете strconv .
источник
mycommandsub1command.go
илиmy_command_sub1command.go
, а как насчетmycommandVO
Go довольно либерален с точки зрения того, как вы организуете свой код в пакете, обычно это то, что улучшает читаемость и понимание вашего кода. Лучший способ узнать, как это делается, - изучить мастеров, то есть просмотреть стандартную библиотеку:
http://golang.org/src/pkg/
Однако есть два правила, которые я могу придумать. При указании кода, который должен быть скомпилирован для разных платформ, вы используете имя платформы как суффикс:
Также, если у вас есть файл с именем
server.go
, тесты для этого файла будут вserver_test.go
.источник
_front
,_writer
или_bits
как существенные суффиксы в будущем , тогда!go
инструмент очень ограничивает структуру пакетов (это одна из моих любимых вещей в языке). Он поддерживает некоторые очень конкретные соглашения (один пакет на папку [по крайней мере с одним исключением], пакет папки имеет то же имя, что и папка [по крайней мере с одним исключением], полный путь импорта пакета совпадает с относительным путем из$GOPATH
, некоторые файлы обрабатываются по-разному в зависимости от формата имени и т. д.)Go is quite liberal in terms of how you organise your code within a package
. Go не является либеральным, это довольно ограничительно. Но это хорошо.Обычно нижнее подчеркивание в именах файлов используется для присвоения кода платформы / архитектуры, например:
sqrt_386.s
будет читаться компилятором только на 32-битных процессорах,sqrt_amd64.s
на amd64 и т. д.Это может быть любое из допустимых значений
GOOS
и / илиGOARCH
( см .file_windows_amd64.go
будет компилироваться только на win64.источник