私は現在Goで作業を開始しており、パッケージの命名とワークスペースのフォルダ構造についてはまだ掘り下げていません。単一のgoプロジェクトで使用されるgoパッケージの適切なフォルダ構造
しかし、私はGoのパラダイムに従って自分のコードを正しく構成する方法はあまりよく分かりません。それは$GOPATH/src
に常駐するようここ
は私の現在の構成例である:
github.com/myusername/project
|-- main.go
+-- internal
+---- config
|------ config.go
だから私は、今度は、それが唯一でなければならないことのように特化され、config
パッケージを使用していますproject
というプロジェクトを持っていますproject
によって使用されます。したがって、私はgithub.com/myusername/config
の下にそれを望んでいない、右か?今
質問は、それが(例えば、それprojectconfig
に名前を付ける)内部パッケージ構造を使用するか、私が代わりにgithub.com/myusername/$pkgname
の下に私のプロジェクトの特定のパッケージを入れて、それがproject
に属することを何とか示すべき「良い」とは?
'config.go'には何が定義されていますか?それは本当に独自のパッケージを保証しますか?あなたの 'github.com/myusername/project'パッケージに設定されていない設定タイプ/関数/変数を持っているだけではありませんか? –
パッケージで提供されるすべての機能では可能ではありませんか?しかし、はい、この例では、私はちょうど2つの関数と設定タイプを 'project'パッケージに入れることができます。私は実際に、内部パッケージをいつ使うべきか、そうしなければならないかという一般的な考え方にもっと興味があります。さらに、小さなパッケージを作成する際に何か不具合はありますか? – sge
ほとんどのGoプロジェクトは 'internal'パッケージを持っています。あなたのルートに 'config'を置いて、あなたのプロジェクトをうまく文書化していると分からないなら、ユーザはそれを使用してはならない、または使用してはならないことを知っています。私は個人的にはどこに置くべきか考えないほうがいいと思うが、すべてを1か所に書いて、理にかなったときにパッケージ/モジュールに抽出するだけだ。 – kopiczko