J'ai pu trouver les conventions pour nommer les paquets dans Go: pas de trait de soulignement entre les mots, tout en minuscules.
Cette convention s'applique-t-elle également aux noms de fichiers?
Mettez-vous également une structure dans un fichier comme si vous le faisiez pour une classe java et nommez-vous le fichier après la structure?
Actuellement, si j'ai un struct WebServer, je le mets dans un fichier web_server.go.
go
naming-conventions
David
la source
la source
Réponses:
Il y a quelques directives à suivre.
_test.go
sont uniquement compilés et exécutés par l'go test
outil.name_linux.go
ne seront construits que sur Linux,name_amd64.go
ne seront construits que sur amd64. C'est la même chose que d'avoir une//+build amd64
ligne en haut du fichierConsultez la documentation de l'
go build
outil pour plus de détails: https://golang.org/pkg/go/build/la source
unix
etothers
. Par exemple, je peux créer deux fichiersfile_windows.go
etfile_others.go
. Ça fonctionne bien. Mais pourfile_unix.go
etfile_others.go
ça ne marche pas. Je ne veux pas créer huit fichiersdarwin freebsg linux openbsd netbsd dragonfly solaris android
.En plus de la réponse fournie par JimB , les noms de fichiers normaux sont en minuscules, courts et sans aucune sorte de trait de soulignement ou d'espace. En général, les noms de fichiers suivent la même convention que les noms de packages. Consultez la section Noms des packages de Effective Go .
Voir le package strconv pour un bon exemple.
la source
mycommandsub1command.go
oumy_command_sub1command.go
, et qu'en est-ilmycommandVO
Go est assez libéral en ce qui concerne la façon dont vous organisez votre code dans un package, généralement c'est ce qui améliore la lisibilité et la compréhension de votre code. La meilleure façon d'apprendre comment cela est fait est d'étudier les maîtres, c'est-à-dire de parcourir la bibliothèque standard:
http://golang.org/src/pkg/
Il y a 2 règles auxquelles je peux penser cependant. Lorsque vous spécifiez du code à compiler pour différentes plates-formes, vous utilisez le nom de la plate-forme comme suffixe:
De plus, si vous avez un fichier appelé
server.go
, les tests pour ce fichier seraient au formatserver_test.go
.la source
_front
,_writer
ou_bits
comme suffixes significatifs dans le futur alors!go
outil est très restrictif sur la structure des packages (c'est l'une de mes choses préférées à propos du langage). Il favorise certaines conventions très spécifiques (un package par dossier [avec au moins une exception], le package du dossier partage le même nom que le dossier [avec au moins une exception], le chemin d'importation complet du package correspond au chemin relatif de$GOPATH
, certains fichiers sont traités différemment selon le format de leur nom, etc.)Go is quite liberal in terms of how you organise your code within a package
. Go n'est pas libéral, c'est assez restrictif. Mais c'est une bonne chose.Habituellement, les traits de soulignement dans les noms de fichiers sont utilisés pour attribuer du code de plate-forme / arch uniquement, par exemple:
sqrt_386.s
ne sera lu par le compilateur que sur les processeurs 32 bits,sqrt_amd64.s
sur amd64, etc.Il peut s'agir de l'une des valeurs valides de
GOOS
et / ouGOARCH
( réf .file_windows_amd64.go
ne sera compilé que sur win64.la source