2016-03-24 2 views
4

ご利用の場合Goプロジェクトはどのように整理されていますか?私はワークスペースの部分でちょっと混乱しています。私は、次の読み取り持っていた:https://golang.org/doc/code.html#Workspacesを...この部分は少し私を投げた:Go - すべてのプロジェクトに1つのワークスペースがありますか、プロジェクトごとに1つのワークスペースがありますか?

典型的なワークスペースには、多くのパッケージとコマンドを含む多くのソースリポジトリが含まれています。ほとんどのGoプログラマは、Goソースコードと依存関係をすべて単一のワークスペースに保持します。

これは私が作成するプロジェクトごとに個別のワークスペースであることを意味しますか?たとえば、2つのプロジェクトで同じパッケージが使用されている場合は、そのパッケージの2つのコピーをコンピュータに保存します。

または、メインのワークスペースがあり、プロジェクトでこれらのパッケージを共有しているということですか?

ビットが混乱します。

+3

"ほとんどのGoプログラマはGoソースコードと依存関係を1つのワークスペースに保存します" – JimB

+1

Goプログラムは必要なものだけがコンパイルされていることを覚えておいてください:すべてのパッケージを出荷する必要はありませんあなたは直接インポートしていません。 – elithrar

+1

@elithrar私はゆっくりと調整しています。私はよく慣れている通訳言語とは違うことをよく忘れています。私は今、すべてのパッケージなしでギブスにどのように押し込むのか考えています。私はそれを把握します。 – BugHunterUK

答えて

4

1つのワークスペースがあり、プロジェクトによってパッケージが共有されます。

それはoverview sectionにあります:

囲碁プログラマは一般的に1つのワークスペース内のすべての彼らの移動コードを保ちます。

これは、すべてのプロジェクトに別々のワークスペースがあり、ワークスペースがバージョン管理リポジトリと密接に関連している他のプログラミング環境とは異なります。

編集:あなたはvendoringを使用する場合は、効果的にプロジェクトごとに別々のワークスペースを得ることができます。これにより、他のプログラミング言語の仕組みに近づくことができます。

3

これまでは、別のバージョンのGoを使用したい場合や、私のプライベートワークを子供と私が楽しんでいるコードから分けたい場合は、別のワークスペースを使用します。また、オープンソースのコードをいくつか試してみたいが、後ですべてを簡単に掃除したい場合もある。

mk /tmp/tmpgo 
cd /tmp/tmpgo 
# Copy or edit a setenv file 
. setenv # I use bash 
よう

何か

setenvファイルは次のようになります。

export GOROOT=$HOME/go16 
export GOPATH=$PWD 
export GOBIN=$GOPATH/bin 
export PATH=$GOROOT/bin:$GOPATH/bin:$PATH 
export PS1='\[\033[01;32m\]workspacenamehere\[\033[01;33m\] \W\[\033[00m\] ' 

これは、独自のbin、src、pkgサブディレクトリを持つgoワークスペースを提供します。私は私が欲しいものを手に入れることができます。後で私が好きな場合は、一時ディレクトリ全体を削除することができます。 github.comのようなリポジトリから物事を得ることは、他の寄稿者から多くのパッケージを入手する傾向がありますが、すべてのパッケージをクリーンなsrcサブディレクトリに置くので、見つけて何が落ちたのかを簡単に見てください。そして、後でhdからすべてを削除することは、さらに簡単です。

6

個人的には、プロジェクトごとに異なるGOPATHを使用したいと思っています。プロセスを自動化するツールを使ってうまくいけば、vgを使うことができます。これはあなたのプロジェクトに異なるGOPATHを管理することになります。

きちんとしたビットは、ほとんどのシェルと統合してプロジェクトを自動検出することです。cdです。

関連する問題