先ほどGo言語の開発環境を構築した際に環境変数GOPATHについて触れましたが、プロジェクトの構築は主にこれによって実現されます。つまり、プロジェクトをビルドしたい場合は、このプロジェクトのディレクトリを GOPATH に追加する必要があり、 ;
を使用して複数のプロジェクトを区切ることができます。
GOPATH が構成されていない場合、コードが同じディレクトリ内にある場合でも、絶対パスを介してコードを相互に呼び出すことはできません。
ディレクトリ構造
Go 言語プロジェクトのディレクトリには通常、次の 3 つのサブディレクトリが含まれます。
- src ディレクトリ: プロジェクトとライブラリのソース ファイルを配置します。
- pkg ディレクトリ: コンパイル後に生成されたパッケージ/ライブラリのアーカイブ ファイルを配置します。
- bin ディレクトリ: コンパイル後に生成された実行ファイルを配置します。
3 つのディレクトリのうち、特に src ディレクトリに注目する必要があり、他の 2 つのディレクトリだけで十分理解できるため、これら 3 つのディレクトリについては個別に紹介します。
ソースディレクトリ
Go ソース ファイルをパッケージの形式で整理して保存するために使用されます。パッケージは src の下の各サブディレクトリに 1 つずつ対応します。たとえば、ソース ファイルがログ パッケージに属すると宣言されている場合、そのファイルは src/log ディレクトリに保存される必要があります。
Go ソース ファイルを src ディレクトリに保存できないという意味ではありません。一般に、テストまたはデモンストレーション中に Go ソース ファイルを src ディレクトリに直接配置できますが、その場合、そのソース ファイルが src ディレクトリに属することを宣言することしかできません。メインパッケージ。通常の開発では、Go ソース ファイルを特定のディレクトリに配置することをお勧めします。
パッケージは Go 言語でコードを管理するための重要なメカニズムであり、その機能はJavaのパッケージや C/ C++のヘッダー ファイルに似ています。 Go ソース ファイル内の最初の有効なコードは、 package hello などのpackage <package name>
の形式である必要があります。
さらに、Go 言語はgo get
コマンドを通じて取得したライブラリ ソース ファイルを src ディレクトリ内の対応するフォルダーにダウンロードすることに注意してください。
パッケージディレクトリ
go install
コマンドでパッケージをインストールした後、アーカイブ ファイルを保存するために使用されます。アーカイブ ファイルは、名前が「.a」で終わるファイルです。
このディレクトリは、GOROOT ディレクトリの下の pkg ディレクトリ (つまり、Go 言語のインストール ディレクトリ) に似ていますが、ここでの pkg ディレクトリは、プロジェクト コードのアーカイブ ファイルを保存するために特別に使用される点が異なります。
プロジェクト コードのコンパイルとインストールのプロセスは、通常、コード パッケージ単位で実行されます。たとえば、ログ パッケージがコンパイルおよびインストールされた後、log.a という名前のアーカイブ ファイルが生成され、現在のプロジェクトの pkg ディレクトリに保存されます。 。
bin ディレクトリ
pkg ディレクトリと同様に、go go install
コマンドのソース ファイルから生成された実行可能ファイルが保持されます。 Unix 系オペレーティング システムでは、実行可能ファイルはコマンド ソース ファイルと同じ名前になります。 Windows オペレーティング システムでは、実行可能ファイルの名前は、コマンド ソース ファイルのファイル名に拡張子 .exe を加えたものになります。
ソースファイル
上でコマンド ソース ファイルとライブラリ ソース ファイルについて説明しましたが、それらは正確には何ですか?
- コマンド ソース ファイル: Go ソース ファイルがメイン パッケージに属すると宣言されており、そのファイルに main 関数が含まれている場合、それはコマンド ソース ファイルです。コマンド ソース ファイルはプログラムのエントリ ポイントに属し、Go 言語の
go run
コマンドを通じて実行するか、go build
コマンドを通じて実行可能ファイルを生成できます。 - ライブラリ ソース ファイル: ライブラリ ソース ファイルとは、パッケージ内に存在する通常のソース ファイルを指し、ライブラリ ソース ファイルには main 関数は含まれません。
コマンドソースファイルかライブラリソースファイルかに関係なく、同じディレクトリ内のすべてのソースファイルは同じパッケージ名を持つ必要があります。