2016-07-26 8 views
3

私はゴランに新しいです。私が理解しているように、新しいGoプロジェクトを作成するには、ディレクトリを作成するだけです。次に、環境変数GOPATHをこのディレクトリに指定します。このディレクトリの中に、pkgsrc、およびbinの3つのサブディレクトリを作成します。その後、go get ...を実行すると、サードパーティのパッケージがpkgサブディレクトリにインストールされます。後で別のGoプロジェクトを作成する場合は、project2という新しいディレクトリを作成し、project2にはGOPATHを指定します。この時点でgo get ...はproject2のサブディレクトリpkgにサードパーティのパッケージをダウンロードします。私の質問は、Goにセントラルリポジトリがあるかどうかです。同じパッケージが2つの異なるプロジェクトで使用されている場合は、2回ダウンロードされます。本当?golangには、ダウンロードしたサードパーティのパッケージ用の中央リポジトリがありますか?

+0

だから、たとえば、ツリー全体は、次のようになりますか?これがあなたのGOPATHです。複数のプロジェクトで同じGOPATHを使用できます。 – JimB

+0

私がproject1で作業している場合、私はGOPATHをproject1に向けます。後で私はproject2に取り組んでいます.GOPATHをproject2に向けるべきですか?その場合、GOPATHはローカルキャッシュではありません... – user130268

+3

GOPATHはプロジェクトのルートではありません。あなたのプロジェクトは '$ GOPATH/src'の下のインポートパスに置かれていなければなりません。 [Go Codeの書き方]を参照してください。 – JimB

答えて

3

goパッケージの中央リポジトリはありません。 Goは常にGOPATHまたはGOROOTのいずれかのパッケージを探しています。単にgitやmercurialを使ってパッケージをダウンロードするだけです。私はあなたが https://golang.org/doc/code.htmlhttps://peter.bourgon.org/go-best-practices-2016/#repository-structure

GOPATHを読むことをお勧めします単にどこsrcpkgディレクトリを検索するようにコンパイラに行くように指示します。私は別の移動プロジェクトを作成する場合

1

はその後、私は行くが、中央リポジトリを持っているかどうか、 ... 私の質問があるのProject2するのProject2とポイントGOPATHと呼ばれる新しいディレクトリを作成しますか?同じパッケージが2つの異なるプロジェクトで使用されている場合は、2回ダウンロードされます。本当?

いいえ、Goコードの中央リポジトリはありません。ただし、パッケージが常に2回ダウンロードされることは事実ではありません。

ここでの誤解は、GOPATHが個々のプロジェクトを指していることです。それはありません。代わりに、GOPATHの環境を指しています。 go getはパッケージをダウンロードし、go buildはビルド時にパッケージを探します。代わりに、すべてのプロジェクトのためにGOPATHを変更するので

、一度GOPATHを設定し、$GOPATH/src/にあなたのプロジェクトのすべてを置く必要があります(あなたのプロジェクトがsrc/ディレクトリが含まれていない、彼らはsrc/ディレクトリを行きます)。あなたは、単一のローカルキャッシュを意味しています、「中央リポジトリ」と

$GOPATH/src/bitbucket.org/ (or GitHub, or your website, or whatever) 
├── YourProject 
└── AnotherProject 
関連する問題