Каковы соглашения для имен файлов в Go?
Я мог бы найти соглашения для именования пакетов в Go: нет подчеркивания между словами, все строчные буквы.
применяется ли это соглашение и к именам файлов?
вы также помещаете одну структуру в один файл, как если бы вы делали для класса java, а затем называете файл после структуры?
В настоящее время, если у меня есть веб-сервер struct, я помещаю его в файл web_server.идти.
4 ответа:
есть несколько рекомендаций, чтобы следовать.
- имена файлов, начинающиеся с "."или" _ " игнорируются инструментом go
- файлы с суффиксом
_test.go
компилируются и запускаются только .- файлы с суффиксами ОС и архитектуры автоматически следуют тем же ограничениям, например
name_linux.go
будет только строить на linux,name_amd64.go
будет только строить на amd64. Это то же самое как//+build amd64
строку в верхней части файласм. документы для
go build
инструмент для более подробной информации:https://golang.org/pkg/go/build/
Go довольно либерально с точки зрения того, как вы организуете свой код в пакете, обычно это то, что улучшает читаемость и понимание вашего кода. Лучший способ узнать, как это делается, - изучить мастеров, т. е. иметь обзор, хотя стандартная библиотека:
есть 2 правила, которые я могу думать однако. При указании кода, который будет компилироваться для разных платформ, вы используете имя платформы в качестве суффикс:
mypkg_linux.go // only builds on linux systems mypkg_windows_amd64.go // only builds on windows 64bit platforms
также, если у вас есть файл с именем
server.go
тесты для этого файла будетserver_test.go
.
в дополнение к ответ предоставлен JimB, обычные имена файлов являются строчными, короткими и без каких-либо подчеркиваний или пробелов. Как правило, имена файлов соответствуют тому же соглашению, что и имена пакетов. Смотрите Имена Пакетов на Эффективный Go.
посмотреть пакета strconv для наглядного примера.
обычно подчеркивание в именах файлов используется для присвоения кода только для платформы / арки, например:
➜ cd $GOROOT/src/pkg/math/ ➜ ls sqrt*s sqrt_386.s sqrt_amd64p32.s sqrt_amd64.s sqrt_arm.s
sqrt_386.s
будет считываться компилятором только на 32-битных процессорах,sqrt_amd64.s
на amd64 и т. д..это может быть любое из допустимых значений
GOOS
и/илиGOARCH
( ref.
file_windows_amd64.go
будет компилироваться только на win64.