GOPATHを理解する

Go

前書き

この記事では、 `+ GOPATH `が何であるか、どのように動作するのか、どのように設定するのかを理解します。 これは、Go開発環境をセットアップするため、およびGoがソースファイルを検索、インストール、およびビルドする方法を理解するための重要なステップです。 この記事では、議論するフォルダ構造の概念を参照する際に、「 GOPATH 」を使用します。 Goがフォルダ構造を見つけるために使用する環境変数を参照するために、 ` $ GOPATH +`を使用します。

Go Workspaceは、Goがソースファイル、コンパイル済みバイナリ、キャッシュされたオブジェクトを管理し、後でコンパイルを高速化する方法です。 複数のスペースを使用することも可能ですが、Goワークスペースは1つだけにすることをお勧めします。 `+ GOPATH +`はワークスペースのルートフォルダーとして機能します。

`+ $ GOPATH +`環境変数を設定する

`+ $ GOPATH +`環境変数は、GoがGoワークスペースを探す場所をリストします。

デフォルトでは、Goは `+ GOPATH `の場所が ` $ HOME / go `であると想定しています。ここで、 ` $ HOME `はコンピューター上のユーザーアカウントのルートディレクトリです。 これを変更するには、 ` $ GOPATH +`環境変数を設定します。 さらに学習するには、https://www.digitalocean.com/community/tutorials/how-to-read-and-set-environmental-and-shell-variables-on-a-linux-vps [reading and Linuxで環境変数を設定する]。

`+ $ GOPATH +`変数の設定の詳細については、Go documentationをご覧ください。

さらに、このhttps://www.digitalocean.com/community/tutorial_series/how-to-install-and-set-up-a-local-programming-environment-for-go[series]では、Goのインストールとセットアップについて説明しています。 Go開発環境。

`+ $ GOPATH `は ` $ GOROOT +`ではありません

`+ $ GOROOT `は、Goのコード、コンパイラ、およびツールが存在する場所です。これは、ソースコードではありません。 ` $ GOROOT `は通常、 ` / usr / local / go `のようなものです。 通常、 ` $ GOPATH `は ` $ HOME / go +`のようなものです。

`+ $ GOROOT +`変数を特に設定する必要はありませんが、古い資料ではまだ参照されています。

次に、Goワークスペースの構造について説明します。

Goワークスペースの構造

Goワークスペース、または「+ GOPATH 」の内部には、「 bin 」、「 pkg 」、および「 src +」の3つのディレクトリがあります。 これらの各ディレクトリには、Goツールチェーンにとって特別な意味があります。

.
├── bin
├── pkg
└── src
 └── github.com/foo/bar
   └── bar.go

これらの各ディレクトリを見てみましょう。

+ $ GOPATH / bin`ディレクトリは、Goが + go install`がコンパイルするバイナリを配置する場所です。 私たちのオペレーティングシステムは、「+ $ PATH 」環境変数を使用して、フルパスなしで実行できるバイナリアプリケーションを見つけます。 このディレクトリをグローバルな ` $ PATH`変数に追加することをお勧めします。

たとえば、「+ $ GOPATH / bin」を「+ $ PATH」に追加してそこからプログラムを実行しない場合、次を実行する必要があります。

$GOPATH/bin/myapp

+ $ GOPATH / bin`を + $ PATH`に追加すると、次のような同じ呼び出しを行うことができます。

myapp

`+ $ GOPATH / pkg +`ディレクトリは、その後のプログラムのコンパイルを高速化するために、Goが事前にコンパイルされたオブジェクトファイルを格納する場所です。 通常、ほとんどの開発者はこのディレクトリにアクセスする必要はありません。 コンパイルで問題が発生した場合は、このディレクトリを安全に削除してGoで再構築できます。

`+ 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

結論

この記事では、Goがソースコードの存在を期待するフォルダーのセットとしての「+ GOPATH 」、およびそれらのフォルダーとその内容について説明しました。 ` $ GOPATH`環境変数を設定して、その場所をデフォルトの` + $ HOME / go`からユーザーの選択に変更する方法について説明しました。 最後に、Goがそのフォルダー構造内でパッケージを検索する方法について説明しました。

Go 1.11で導入されたhttps://github.com/golang/go/wiki/Modules[Go Modules]は、Goワークスペースと `+ GOPATH +`を置き換えることを目的としています。 モジュールの使用を開始することをお勧めしますが、企業環境などの一部の環境では、モジュールを使用する準備が整っていない場合があります。

`+ GOPATH +`はGoを設定する上で難しい面の1つですが、一度設定すると、通常は忘れることができます。

前の投稿:Ubuntu 16.04でGraylog 2を使用してログを管理する方法
次の投稿:Goでのメソッドの定義