Что такое соглашения для имен файлов в 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.