Eu poderia encontrar as convenções para nomear pacotes em Go: sem sublinhado entre as palavras, tudo em minúsculas.
Esta convenção também se aplica aos nomes dos arquivos?
Você também coloca uma estrutura em um arquivo como se fizesse para uma classe java e, em seguida, nomeia o arquivo após a estrutura?
Atualmente, se eu tenho um struct WebServer, coloco em um arquivo web_server.go.
go
naming-conventions
david
fonte
fonte
Respostas:
Existem algumas orientações a seguir.
_test.go
são compilados e executados apenas pelago test
ferramenta.name_linux.go
serão construídos apenas no Linux,name_amd64.go
serão construídos apenas em amd64. Isso é o mesmo que ter uma//+build amd64
linha no topo do arquivoConsulte os documentos da
go build
ferramenta para obter mais detalhes: https://golang.org/pkg/go/build/fonte
unix
eothers
. Por exemplo, posso fazer dois arquivosfile_windows.go
efile_others.go
. Funciona bem. Mas parafile_unix.go
efile_others.go
não funciona. Não quero criar oito arquivosdarwin freebsg linux openbsd netbsd dragonfly solaris android
.Além da resposta fornecida por JimB , os nomes de arquivo regulares são minúsculos, curtos e sem qualquer tipo de sublinhado ou espaço. Geralmente, os nomes dos arquivos seguem a mesma convenção dos nomes dos pacotes. Consulte a seção Nomes de pacotes do Effective Go .
Veja o pacote strconv para um bom exemplo.
fonte
mycommandsub1command.go
oumy_command_sub1command.go
e quantomycommandVO
Go é bastante liberal em termos de como você organiza seu código dentro de um pacote, geralmente é o que melhora a legibilidade e compreensão de seu código. A melhor maneira de aprender como isso é feito é estudar os mestres, ou seja, navegar pela biblioteca padrão:
http://golang.org/src/pkg/
Existem 2 regras nas quais posso pensar. Ao especificar o código a ser compilado para plataformas diferentes, você usa o nome da plataforma como um sufixo:
Além disso, se você tiver um arquivo chamado
server.go
, os testes para esse arquivo serão emserver_test.go
.fonte
_front
,_writer
ou_bits
como sufixos significativos no futuro!go
ferramenta é muito restritiva quanto à estrutura de pacotes (é uma das minhas coisas favoritas sobre a linguagem). Favorece algumas convenções muito específicas (um pacote por pasta [com pelo menos uma exceção], o pacote da pasta compartilha o mesmo nome da pasta [com pelo menos uma exceção], o caminho completo de importação do pacote corresponde ao caminho relativo de$GOPATH
, alguns arquivos são tratados de forma diferente dependendo do formato do nome, etc)Go is quite liberal in terms of how you organise your code within a package
. Go não é liberal, é bastante restritivo. Mas isso é bom.Normalmente, o sublinhado em nomes de arquivo é usado para atribuir código de plataforma / apenas de arquitetura, por exemplo:
sqrt_386.s
só será lido pelo compilador em processadores de 32 bits,sqrt_amd64.s
em amd64, etc.Pode ser qualquer um dos valores válidos de
GOOS
e / ouGOARCH
( ref .file_windows_amd64.go
será compilado apenas no win64.fonte