Goでパッケージの命名規則を見つけることができました。単語間にアンダースコアはなく、すべて小文字です。
この規則はファイル名にも適用されますか?
Javaクラスに対して行ったように、1つのファイルに1つの構造体を配置し、構造体の後にファイル名を付けますか?
現在、WebServer構造体がある場合、web_server.goファイルに配置します。
従うべきいくつかのガイドラインがあります。
_test.go
が付いたファイルは、go test
ツールによってのみコンパイルおよび実行されます。name_linux.go
はLinuxでのみビルドされ、name_AMD64.go
はAMD64でのみビルドされます。これは、ファイルの先頭に//+build AMD64
行があるのと同じです詳細については、go build
ツールのドキュメントを参照してください。 https://golang.org/pkg/go/build/
Goは、パッケージ内でコードを整理する方法に関して非常にリベラルです。通常は、コードの読みやすさと理解を向上させるものです。これがどのように行われるかを学ぶ最良の方法は、マスターを研究することです。つまり、標準ライブラリを閲覧します。
ただし、考えられるルールは2つあります。さまざまなプラットフォーム用にコンパイルするコードを指定する場合、プラットフォーム名をサフィックスとして使用します。
mypkg_linux.go // only builds on linux systems
mypkg_windows_AMD64.go // only builds on windows 64bit platforms
また、server.go
というファイルがある場合、そのファイルのテストはserver_test.go
にあります。
JimBが提供する回答 に加えて、通常のファイル名は小文字で短く、アンダースコアやスペースは一切含まれません。通常、ファイル名はパッケージ名と同じ規則に従います。 Effective Go の パッケージ名 セクションを参照してください。
良い例については、 strconv package をご覧ください。
通常、ファイル名のアンダースコアは、プラットフォーム/アーカイブのみのコードを割り当てるために使用されます。例:
➜ cd $GOROOT/src/pkg/math/
➜ ls sqrt*s
sqrt_386.s sqrt_AMD64p32.s sqrt_AMD64.s sqrt_arm.s
sqrt_386.s
は、32ビットプロセッサーのコンパイラー、_AMD64のsqrt_AMD64.s
などによってのみ読み取られます。
GOOS
やGOARCH
( ref の有効な値のいずれかを指定できます。
file_windows_AMD64.go
はwin64でのみコンパイルされます。