1

GoでAPIを作成し、を介して2つのパッケージをインストールgo getし、自分で使用するために他の4つのパッケージを作成しました。すべてが正常に機能しているようです。ただし、Gitディレクトリ内にすべてを含めることができるように、パッケージがある場所に移動したいと思います。

私が読んだことから、GOPATH変数を新しいディレクトリに変更し、go get再度実行してテストするのと同じくらい簡単なはずです。これは正しいです?もしそうなら、私は何か間違ったことをしていますか?以下は、を実行したときにターミナル(Mac OS X)に表示されるものgo envです。他に役立つ情報があれば教えてください。ありがとう。

GOARCH="amd64"
GOBIN=""
GOCHAR="6"
GOEXE=""
GOGCCFLAGS="-g -O2 -fPIC -m64 -pthread -fno-common"
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Applications/MAMP/htdocs/git/cbi/api"
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
CGO_ENABLED="1"

デフォルトでは、myGOPATHは空の文字列であったことを明確にする必要があります。新しいパッケージをインストールしたいので、上のディレクトリに更新してみました。また、Goで、作成したパッケージを探して、そこに配置しました。

GOPATH次のコマンドを実行して変数を設定しています。

export GOPATH="/Applications/MAMP/htdocs/git/cbi/api"

これを行った後、入力すると変数が設定されていることがわかりますgo env。ただし、ターミナルを終了してから開いてgo env再度実行すると、GOPATH変数が設定されません。保存しない理由はありますか?エクスポートではなく、別の方法で設定する必要がありますか?

4

3 に答える 3

3

GOPATH変数を設定しない場合、パッケージはGOROOTにインストールされますが、これはお勧めしません。GOPATHを「/Applications/ MAMP / htdocs / git / cbi / api」に設定する場合は、コードのディレクトリが「/ Applications / MAMP / htdocs / git / cbi / api /src/」にあることを確認してください。

ただし、ターミナルを終了してから再度開いて「go env」を再度実行すると、GOPATH変数が設定されません。

jeremyが言うように、bash設定ファイルで環境変数を設定する必要があります。mac osでは、これを$ HOME / .profileに追加します: export GOPATH=/Applications/MAMP/htdocs/git/cbi/api。ところで、たとえば、複数のGOPATHを指定できます。export GOPATH=/path/to/gopath1:/path/to/gopath2

于 2013-02-21T13:21:03.290 に答える
2

私のアプローチは、プロジェクトディレクトリのenv.shに次のように入力して、新しいGoプロジェクトを開始することでした。

export GOPATH=$PWD
export PATH=$GOPATH/bin:$PATH

次に、新しいターミナルウィンドウで作業を開始する前に、常にこのファイルを「ソース」します。

. env.sh

次に、「go get」を使用すると、ダウンロードしたすべてのソースコードが現在のプロジェクトフォルダーに配置され、選択したバージョン管理システムにコミットできます。これがこのアプローチの利点です。すべてが1つのディレクトリツリーに保持され、簡単にバージョン管理できます。

env.shのソースを忘れた場合、Goコマンドは通常すぐに失敗します。これは、/ usr / local / goファイルへの書き込みアクセス権がないためです。これは、ファイルが配置されるデフォルトの場所です。それで、私はすぐに私が忘れなかったことに気づきました。

于 2013-02-21T14:41:28.393 に答える
1

GOPATHに3つのサブフォルダーがあることを確認してください:src、pkg / linux_amd64(これはOSに関係しています)、bin

詳細については、 GOPATHBuildを参照してください。

于 2013-02-21T00:07:00.737 に答える