web-dev-qa-db-fra.com

Quelles sont les conventions pour les noms de fichiers dans Go?

Je pouvais trouver les conventions pour nommer les paquets dans Go: pas de trait de soulignement entre les mots, tout en minuscule.

Cette convention s'applique-t-elle aussi aux noms de fichiers?

Placez-vous également une structure dans un fichier comme si vous l'aviez fait pour une classe Java, puis nommez le fichier après la structure?).

Actuellement, si j'ai un struct WebServer, je le mets dans un fichier web_server.go.

79
david

Il y a quelques directives à suivre.

  1. Les noms de fichiers qui commencent par "." ou "_" sont ignorés par l'outil go
  2. Fichiers avec le suffixe _test.go ne sont compilés et exécutés que par le go test outil.
  3. Les fichiers avec des suffixes spécifiques à l'architecture et à l'architecture respectent automatiquement ces mêmes contraintes, par exemple. name_linux.go ne construira que sur linux, name_AMD64.go ne construira que sur AMD64. C'est pareil que d'avoir un //+build AMD64 ligne en haut du fichier

Voir la documentation pour le go build outil pour plus de détails: https://golang.org/pkg/go/build/

101
JimB

Go est assez libéral quant à la manière dont vous organisez votre code dans un package. C'est généralement 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 le code à compiler pour différentes plates-formes, vous utilisez le nom de la plate-forme comme suffixe:

mypkg_linux.go         // only builds on linux systems
mypkg_windows_AMD64.go // only builds on windows 64bit platforms

Aussi, si vous avez un fichier nommé server.go, les tests pour ce fichier seraient en server_test.go.

15
Matt Harrison

En plus de réponse fournie par JimB , les noms de fichier normaux sont en minuscule, courts et sans soulignement ni espace. Généralement, les noms de fichier suivent la même convention que les noms de paquet. Voir la section Noms de paquets de Effective Go .

Voir le paquet strconv pour un bon exemple.

15
Zamicol

Généralement, les soulignés dans les noms de fichiers sont utilisés pour attribuer un code plate-forme/Arch uniquement, par exemple:

➜ cd $GOROOT/src/pkg/math/
➜ ls sqrt*s
sqrt_386.s  sqrt_AMD64p32.s  sqrt_AMD64.s  sqrt_arm.s

sqrt_386.s ne sera lu que par le compilateur sur les processeurs 32 bits, sqrt_AMD64.s sur AMD64, etc.

Ce peut être n'importe laquelle des valeurs valides de GOOS et/ou GOARCH ( ref .

file_windows_AMD64.go ne sera compilé que sur win64.

6
OneOfOne