パッケージは複数の Go ソース コードのコレクションであり、高度なコード再利用ソリューションです。 Go 言語パッケージは、ディレクトリ ツリーの編成形式を使用します。一般に、パッケージの名前は、そのソース ファイルが配置されているディレクトリの名前です。パッケージは、非常に深いディレクトリに定義できます。パッケージ名の定義には、ディレクトリ パスですが、パッケージは参照されます。通常は完全なパス参照を使用します。
このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。
Go 言語はパッケージを使用してソース コードを整理します。パッケージは複数の Go ソース コードのコレクションであり、高度なコード再利用ソリューションです。 Go 言語は、fmt、os、io などの多くの組み込みパッケージを提供します。
Golang のパッケージとフォルダーは 1 対 1 に対応しており、使用する前に GOPATH ディレクトリに作成する必要があります。 Golang のパッケージが別のパッケージの内容を参照する必要がある場合は、使用する前に import キーワードを使用してインポートする必要があります。
ソース コード ファイルは特定のパッケージに属している必要があり、ソース コード ファイル内の有効なコードの最初の行は、パッケージを宣言する package pacakgeName
ステートメントである必要があります。で。
パッケージの基本概念
Go 言語パッケージはディレクトリ ツリーの編成形式を使用します。通常、パッケージの名前はディレクトリです。 Go 言語では、パッケージ名がそのパッケージが置かれているディレクトリ名と同じ名前である必要はありませんが、パッケージ名はそれが置かれているディレクトリと同じ名前にすることが推奨されています。構造がより明確になるように配置されています。
パッケージは非常に深いディレクトリに定義できます。パッケージ名の定義にはディレクトリ パスは含まれませんが、パッケージを参照する場合は通常、フル パスが使用されます。たとえば、GOPATH/src/a/b/
にパッケージ c を定義します。パッケージ c のソース コードでは、package a/b/c
ではなく package c
として宣言するだけで済みますが、c パッケージをインポートする際にはパスを持ってくる必要があります。 import "a/b/c"
など。
パッケージの慣用的な使用法:
パッケージ名は通常小文字で、短くて意味のある名前を使用します。
パッケージ名は通常、パッケージが配置されているディレクトリと同じ名前ですが、異なる名前にすることもできます。パッケージ名には、- などの特殊記号を含めることはできません。
パッケージは通常、ドメイン名をディレクトリ名として使用するため、パッケージ名の一意性が保証されます。たとえば、GitHub プロジェクトのパッケージは通常、GOPATH/src に配置されます。 /github.com/userName /projectName
ディレクトリ。
main という名前のパッケージはアプリケーションのエントリ パッケージです。メイン パッケージが含まれていないソース コード ファイルをコンパイルすると、実行可能ファイルは取得されません。
フォルダー内のすべてのソース コード ファイルは、同じパッケージにのみ属することができます。同じパッケージに属するソース コード ファイルを複数のフォルダーに配置することはできません。
パッケージのインポート
コード内で他のパッケージの内容を参照するには、import キーワードを使用する必要があります。インポートするパッケージ。具体的な構文は次のとおりです:
import "包的路径"
注:
インポート ステートメントは通常、ソース コード ファイルの先頭のパッケージ宣言ステートメントの下に配置されます。
GOPATH/src/## から計算されます#、/ を使用してパスを区切ります。
パッケージの参照パスを記述する方法は 2 つあります。つまり、完全パスのインポートと相対パスです。パスのインポート。
フル パス インポート
パッケージの絶対パスは、以下に示すように、GOROOT/src/ または GOPATH/src/ の背後にあるパッケージのストレージ パスです。 ##import "lab/test"
import "database/sql/driver"
import "database/sql"
テスト パッケージはカスタマイズされたパッケージであり、そのソース コードは GOPATH/src/lab/ にあります。テスト ディレクトリ;
ドライバー パッケージのソース コードは GOROOT/src/database/sql/driver ディレクトリにあります;
SQL パッケージのソース コードは GOROOT/src/database/sql ディレクトリにあります。
相対パスは GOPATH の下にパッケージをインポートする場合にのみ使用でき、標準パッケージはフル パスを使用してのみインポートできます。 。 たとえば、パッケージ a のパスは GOPATH/src/lab/a で、パッケージ b のパスは GOPATH/src/lab/b です。パッケージ a をパッケージ b にインポートする場合、次を使用できます。インポートするための相対パス。例は次のとおりです。
// 相对路径导入 import "../a"
もちろん、以下に示すように、フル パスを使用して上記をインポートすることもできます。
// 全路径导入 import "lab/a"
パッケージの読み込み
これまでの一連の学習を通じて、Go プログラムの起動とロードのプロセスについては大体理解できたと思います。メイン パッケージの main 関数を実行する前に、Go ブート プログラムは最初に初期化されます。プログラムパッケージ全体。実行プロセス全体を次の図に示します。
図: Go パッケージの初期化
Go 言語パッケージの初期化には次の特徴があります:
パッケージ初期化プログラムは、main 関数によって参照されるパッケージから開始され、他のパッケージを参照しないパッケージが見つかるまで段階的にパッケージ参照を検索し、最後に有向非巡回グラフを生成します。パッケージ参照の。
Go コンパイラは、有向非巡回グラフをツリーに変換し、ツリーのリーフ ノードから開始して層ごとにパッケージを初期化します。
単一パッケージの初期化プロセスは上図のように、最初に定数が初期化され、次にグローバル変数が初期化され、最後にパッケージの init 関数が実行されます。
Golang パッケージの使用法の概要
Go 言語のソース コード編成では、パッケージの形式を使用します。 Go 言語の main 関数は、main パッケージ内のシステムによってのみ実行できます。
【関連する推奨事項: Go ビデオ チュートリアル 、プログラミング教育 】
以上がGo言語のパッケージとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。