私はいくつかの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
。