GOPATHとGOROOTについて知りたいことすべて

Goは入力が最も簡単な言語の1つと考えられていますが、「すべてが明確ではないため、GOROOTとGOPATHの一部の変数を設定する必要がある」と定期的に聞く必要があります。 また、このトピックはGoの公式Webサイトで完全に公開されていますが、非常に簡単な言語で説明することは不要ではありません。

TL; DR


ここでもう少し詳しく:

GOROOT


GOROOTは、実際にはGoのバイナリアセンブリ全体とソースコードの場所を示す変数です。 JAVA_HOMEのようなもの。 MSIインストーラーを使用せず、zipアーカイブからWindowsでGoをインストールする場合にのみ、この変数をハンドルで設定する必要があります。 さて、またはGoの複数のバージョンをそれぞれ独自のディレクトリに保存する場合。

以前(Go 1.0より前)この変数は必要でした-ビルドスクリプト、GOARCH、GOOSで使用されていました。 しかし、Go 1.0以降、goツールの内部ロジックが少し変更され、ビルドまたはインストールの段階でGOROOT値がハードコーディングされています。 つまり、go-デフォルトのインストール-この値を知っているなどです。 次のコマンドを使用して表示できます。

go env GOROOT 

MacOS Xでは、これは/ usr / local / go /であり、Linuxでも(ディストリビューションによって異なりますが)、Windowsでは、C:\ Goです。

ゴーパス


ただし、 GOPATH変数非常に重要で必要であり、必ず1回だけ設定する必要があります。 これがワークスペースであり、Goで作業するのはコードとバイナリファイルだけです。 したがって、便利なパスを選択してGOPATHに保存してください。 例:

 export GOPATH=~/go export GOPATH=~/gocode export GOPATH=~/Devel/go export GOPATH=~/Projects/go 

まあ、必ず.profileに保存するか、変数をそこに保存する方法を忘れないでください:

 echo "export GOPATH=~/go" >> ~/.profile ( .bash_profile) 

すべて、一度行って忘れてください。 まだ存在しない場合は、このディレクトリのみを作成し、準備ができています。 get github.com/someuser/somelibを呼び出すと、ソースが$ GOPATH / srcに自動的にダウンロードされ、バイナリコンパイル結果が$ GOPATH / pkgまたは$ GOPATH / bin(それぞれライブラリと実行可能ファイル用)に追加されます。

パス


これはオプションですが、環境のセットアップについて設定しているため、すぐに実行することをお勧めします。 遅かれ早かれ、GOPATH / binにあるGoプログラムを使用することになります。 不要なジェスチャなしでそれらを使用するには、$ GOPATH / binディレクトリをPATHに追加します。

 export PATH=$PATH:$GOPATH/bin 

go installコマンドは、バイナリを収集してこのディレクトリにインストールします。したがって、これは便宜上のみです。

ワークスペース構造


ここで、GOPATHディレクトリの構造を注意深く見てみましょう。 公式ドキュメントの例をご覧ください。

 bin/ hello #  hello pkg/ linux_amd64/ #           github.com/user/ stringutil.a #     stringutil src/ github.com/user/ hello/ hello.go #    hello stringutil/ reverse.go #    stringutil 

簡単ですよね? src /のディレクトリに何らかの形式で名前を付ける義務はないことを理解することが重要です。 src / test / my_first_app / main.goおよびsrc / anyname / main.goを使用できます-ただし、バージョン管理システムを使用している(そしてまだ作業している)場合は、間違いなく便利です-go get / install utility useこれらは、バージョン管理システムでの作業を非常にシンプルにするための命名規則です。

オプショナル


GOPATH変数は標準のPATHに似ています-「:」で複数のディレクトリを指定できます。 GOPATH =〜/ go:〜/ other_workspace。 これは非常にまれですが(たとえば、gpmのような外部の依存関係マネージャーで作業する場合)、99%では必要ありません。GOPATHで1つのディレクトリのみを使用することをお勧めします。

最終的に、個別のワークスペースが必要な場合は、GOPATH変数を必要な変数(ビルドスクリプトなど)にいつでも置き換えることができます。 ですから、実際にはそうです。

参照資料


golang.org/doc/install
golang.org/doc/code.html
dave.cheney.net/2013/06/14/you-dont-need-to-set-goroot-really

Source: https://habr.com/ru/post/J249545/


All Articles