Ich konnte die Konventionen für die Benennung von Paketen in Go finden: kein Unterstrich zwischen Wörtern, alles in Kleinbuchstaben.
Gilt diese Konvention auch für die Dateinamen?
Fügen Sie auch eine Struktur in eine Datei ein, wie Sie es für eine Java-Klasse getan haben, und benennen Sie die Datei dann nach der Struktur?
Wenn ich einen struct WebServer habe, lege ich ihn derzeit in eine Datei web_server.go.
go
naming-conventions
David
quelle
quelle
Antworten:
Es gibt ein paar Richtlinien zu befolgen.
_test.go
werden nur vomgo test
Tool kompiliert und ausgeführt .name_linux.go
werden nur unter Linux undname_amd64.go
nur unter amd64 erstellt. Dies entspricht einer//+build amd64
Zeile am Anfang der Dateigo build
Weitere Informationen finden Sie in den Dokumenten zum Tool: https://golang.org/pkg/go/build/quelle
unix
undothers
. ZB kann ich zwei Dateien machenfile_windows.go
undfile_others.go
. Es funktioniert gut. Aber fürfile_unix.go
undfile_others.go
es funktioniert nicht. Ich möchte keine acht Dateien erstellendarwin freebsg linux openbsd netbsd dragonfly solaris android
.Zusätzlich zu der Antwort von JimB sind reguläre Dateinamen in Kleinbuchstaben, kurz und ohne Unterstrich oder Leerzeichen. Im Allgemeinen folgen Dateinamen der gleichen Konvention wie Paketnamen. Siehe den Paketnamen Abschnitt Effective Go .
Ein gutes Beispiel finden Sie im strconv-Paket .
quelle
mycommandsub1command.go
odermy_command_sub1command.go
, und was ist mitmycommandVO
Go ist ziemlich liberal in Bezug auf die Organisation Ihres Codes innerhalb eines Pakets. In der Regel verbessert dies die Lesbarkeit und das Verständnis Ihres Codes. Der beste Weg, um zu lernen, wie dies gemacht wird, besteht darin, die Master zu studieren, dh die Standardbibliothek zu durchsuchen:
http://golang.org/src/pkg/
Es gibt jedoch zwei Regeln, an die ich denken kann. Wenn Sie Code angeben, der für verschiedene Plattformen kompiliert werden soll, verwenden Sie den Plattformnamen als Suffix:
Auch wenn Sie eine Datei mit dem Namen haben
server.go
, befinden sich die Tests für diese Datei inserver_test.go
.quelle
_front
,_writer
oder_bits
dann als signifikant Suffixe in der Zukunft!go
Tool ist sehr restriktiv in Bezug auf die Paketstruktur (es ist eines meiner Lieblingssachen in Bezug auf die Sprache). Es werden einige sehr spezifische Konventionen bevorzugt (ein Paket pro Ordner [mit mindestens einer Ausnahme], das Paket des Ordners hat denselben Namen wie der Ordner [mit mindestens einer Ausnahme], der vollständige Paketimportpfad entspricht dem relativen Pfad von$GOPATH
, einige Dateien sind je nach Namensformat usw. unterschiedlich behandeltGo is quite liberal in terms of how you organise your code within a package
. Go ist nicht liberal, es ist ziemlich restriktiv. Aber das ist gut so.Normalerweise werden Unterstriche in Dateinamen verwendet, um Plattform- / Arch-Only-Code zuzuweisen, zum Beispiel:
sqrt_386.s
wird vom Compiler nur auf 32-Bit-Prozessoren,sqrt_amd64.s
auf amd64 usw. gelesen .Es kann sich um einen der gültigen Werte von
GOOS
und / oderGOARCH
( ref .file_windows_amd64.go
wird nur auf win64 kompiliert.quelle