Каковы соглашения для имен файлов в Go?


Я мог бы найти соглашения для именования пакетов в Go: нет подчеркивания между словами, все строчные буквы.

применяется ли это соглашение и к именам файлов?

вы также помещаете одну структуру в один файл, как если бы вы делали для класса java, а затем называете файл после структуры?

В настоящее время, если у меня есть веб-сервер struct, я помещаю его в файл web_server.идти.

4 53

4 ответа:

есть несколько рекомендаций, чтобы следовать.

  1. имена файлов, начинающиеся с "."или" _ " игнорируются инструментом go
  2. файлы с суффиксом _test.go компилируются и запускаются только .
  3. файлы с суффиксами ОС и архитектуры автоматически следуют тем же ограничениям, например name_linux.go будет только строить на linux,name_amd64.go будет только строить на amd64. Это то же самое как //+build amd64 строку в верхней части файла

см. документы для go build инструмент для более подробной информации:https://golang.org/pkg/go/build/

Go довольно либерально с точки зрения того, как вы организуете свой код в пакете, обычно это то, что улучшает читаемость и понимание вашего кода. Лучший способ узнать, как это делается, - изучить мастеров, т. е. иметь обзор, хотя стандартная библиотека:

http://golang.org/src/pkg/

есть 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.