GOPATHを理解する
ステータス:非推奨
この記事は非推奨になり、保守されなくなりました。
理由
Go v1.13以降、Goの作成者は、Goプロジェクトが依存するライブラリを管理する新しい方法を追加しました。これはGoモジュールと呼ばれます。 モジュールの使用は、依存関係を維持し、Goプロジェクト構造を管理するための現在の方法です。 GOPATHを理解することは依然として重要かもしれませんが、モジュールはほとんどの場合、日常の使用のためにGOPATHに取って代わりました。
また、このチュートリアルで説明されているGoワークスペースは、Gov1.18でリリースされたマルチモジュールワークスペースとは異なります。 現在のGoワークスペースの詳細については、ワークスペースのGo製品ドキュメントを参照してください。
代わりに参照してください
この記事は参照として役立つ場合がありますが、機能しない場合やベストプラクティスに従わない場合があります。 使用しているオペレーティングシステム用に書かれた最新の記事を使用することを強くお勧めします。
序章
この記事では、 GOPATH
つまり、それがどのように機能し、どのように設定するかです。 これは、Go開発環境をセットアップするため、およびGoがソースファイルを検索、インストール、および構築する方法を理解するための重要なステップです。 この記事では、 GOPATH
フォルダ構造の概念を参照するときは、ここで説明します。 我々は使用するだろう $GOPATH
Goがフォルダ構造を見つけるために使用する環境変数を参照します。
Goワークスペースは、Goがソースファイル、コンパイルされたバイナリ、および後でより高速にコンパイルするために使用されるキャッシュされたオブジェクトを管理する方法です。 複数のスペースを持つことも可能ですが、Goワークスペースは1つだけにするのが一般的であり、推奨されます。 The GOPATH
ワークスペースのルートフォルダとして機能します。
の設定 $GOPATH
環境変数
The $GOPATH
環境変数は、GoがGoワークスペースを探す場所をリストします。
デフォルトでは、Goは GOPATH
場所はにあります $HOME/go
、 どこ $HOME
コンピューター上のユーザーアカウントのルートディレクトリです。 これを変更するには、 $GOPATH
環境変数。 詳細については、Linuxでの環境変数の読み取りと設定に関するこのチュートリアルに従ってください。
設定の詳細については $GOPATH
変数については、Goドキュメントを参照してください。
さらに、このシリーズでは、GoのインストールとGo開発環境のセットアップについて説明します。
$GOPATH
ではありません $GOROOT
The $GOROOT
Goのコード、コンパイラ、およびツールが存在する場所です。これは、ソースコードではなくです。 The $GOROOT
通常は次のようなものです /usr/local/go
. 私たちの $GOPATH
通常は次のようなものです $HOME/go
.
特に設定する必要はありませんが $GOROOT
変数はもうありませんが、古い資料ではまだ参照されています。
それでは、Goワークスペースの構造について説明しましょう。
Goワークスペースの構造
Goワークスペースの内部、または GOPATH
、3つのディレクトリがあります。 bin
, pkg
、 と src
. これらの各ディレクトリは、Goツールチェーンにとって特別な意味を持っています。
.
├── bin
├── pkg
└── src
└── github.com/foo/bar
└── bar.go
これらの各ディレクトリを見てみましょう。
The $GOPATH/bin
ディレクトリは、Goがバイナリを配置する場所です。 go install
コンパイルします。 私たちのオペレーティングシステムは $PATH
フルパスなしで実行できるバイナリアプリケーションを見つけるための環境変数。 このディレクトリをグローバルに追加することをお勧めします $PATH
変数。
たとえば、追加しない場合 $GOPATH/bin
に $PATH
そこからプログラムを実行するには、次を実行する必要があります。
- $GOPATH/bin/myapp
いつ $GOPATH/bin
に追加されます $PATH
次のように同じ呼び出しを行うことができます。
- myapp
The $GOPATH/pkg
ディレクトリは、Goがプリコンパイルされたオブジェクトファイルを保存して、その後のプログラムのコンパイルを高速化する場所です。 通常、ほとんどの開発者はこのディレクトリにアクセスする必要はありません。 コンパイルで問題が発生した場合は、このディレクトリを安全に削除して、Goが再構築します。
The src
ディレクトリは私たちのすべてが .go
ファイルまたはソースコードを見つける必要があります。 これは、Goツールが使用するソースコードと混同しないでください。 $GOROOT
. Goアプリケーション、パッケージ、およびライブラリを作成するときに、これらのファイルを下に配置します $GOPATH/src/path/to/code
.
パッケージとは何ですか?
Goコードはパッケージにまとめられています。 パッケージは、ディスク上の単一のディレクトリ内のすべてのファイルを表します。 1つのディレクトリには、同じパッケージの特定のファイルのみを含めることができます。 パッケージは、ユーザーが作成したすべてのGoソースファイルとともに、 $GOPATH/src
ディレクトリ。 さまざまなパッケージをインポートすることで、パッケージの解決を理解できます。
私たちのコードが $GOPATH/src/blue/red
その場合、そのパッケージ名は次のようになります。 red
.
のインポートステートメント red
パッケージは次のようになります。
import "blue/red"
GitHubやBitBucketなどのソースコードリポジトリに存在するパッケージには、インポートパスの一部としてリポジトリの完全な場所があります。
たとえば、次のインポートパスを使用して、https://github.com/gobuffalo/buffaloでソースコードをインポートします。
import "github.com/gobuffalo/buffalo"
したがって、このソースコードはディスク上の次の場所にあります。
$GOPATH/src/github.com/gobuffalo/buffalo
結論
この記事では、 GOPATH
Goがソースコードが存在することを期待するフォルダのセットとして、それらのフォルダが何であるか、そしてそれらが何を含んでいるか。 その場所をデフォルトの $HOME/go
を設定することにより、ユーザーの選択に $GOPATH
環境変数。 最後に、Goがそのフォルダー構造内のパッケージを検索する方法について説明しました。
Go 1.11で導入された、GoモジュールはGoワークスペースと GOPATH
. モジュールの使用を開始することをお勧めしますが、企業環境などの一部の環境では、モジュールを使用する準備ができていない場合があります。
The GOPATH
Goを設定する際のトリッキーな側面の1つですが、一度設定すると、通常は忘れることができます。