私はいくつかのGoプロジェクトを研究してきましたが、かなりのバリエーションがあります。前者はmainパッケージのプロジェクトルートディレクトリのすべてのほぼすべてをダンプし、後者はすべてをsrcディレクトリに置く傾向があるため、CからだれがJavaから来ているかを知ることができます。ただし、どちらも最適ではありません。インポートパスと他のユーザーによるインポートパスの再利用に影響を与えるため、それぞれに影響があります。
最良の結果を得るために、私は次のアプローチを考え出しました。
myproj/
main/
mypack.go
mypack.go
どこにmypack.goありpackage mypack、main/mypack.go(明らかに)package mainです。
追加のサポートファイルが必要な場合は、2つの選択肢があります。それらすべてをルートディレクトリに保存するか、プライベートサポートファイルをlibサブディレクトリに配置します。例えば
myproj/
main/
mypack.go
myextras/
someextra.go
mypack.go
mysupport.go
または
myproj.org/
lib/
mysupport.go
myextras/
someextra.go
main/
mypack.go
mypage.go
lib別のプロジェクトでインポートすることを意図していない場合にのみ、ファイルをディレクトリに配置してください。つまり、プライベートサポートファイルの場合です。これが、libパブリックインターフェイスとプライベートインターフェイスを分離することの背後にある考え方です。
このようにするとmyproj.org/mypack、他のプロジェクトでコードを再利用するための優れたインポートパスが得られます。使用する場合lib、内部サポートファイルには、それを示すインポートパスがありmyproj.org/lib/mysupportます。
プロジェクトをビルドするときはmain/mypack、たとえばを使用しますgo build main/mypack。複数の実行可能ファイルがある場合は、main個別のプロジェクトを作成せずに、それらを分離できます。例main/myfoo/myfoo.goとmain/mybar/mybar.go。