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

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

Используется ли это соглашение для имен файлов?

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

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

Ответы

Ответ 1

Вот несколько руководств.

  • Имена файлов, начинающиеся с "." или "_" игнорируются инструментом go
  • Файлы с суффиксом _test.go компилируются и запускаются с помощью инструмента go test.
  • Файлы с дополнительными суффиксами os и архитектуры автоматически следуют тем же ограничениям, например. name_linux.go будет построен только на Linux, name_amd64.go будет работать только на amd64. Это то же самое, что строка //+build amd64 в верхней части файла

Подробнее см. в документах для инструмента go build: https://golang.org/pkg/go/build/

Ответ 2

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.

Ответ 3

В дополнение к запросу предоставленному JimB, обычные имена файлов являются строчными, короткими и без каких-либо подчеркиваний или пробелов. Как правило, имена файлов соответствуют тому же соглашению, что и имена пакетов. См. Раздел Имена пакетов в Эффективный вариант.

Для хорошего примера см. пакет strconv.

Ответ 4

Обычно подчеркивание в именах файлов используется для назначения кода платформы/арки, например:

➜ 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.