Go言語のパッケージとは何ですか
パッケージは複数の 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 サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

Go言語での文字列印刷の違い:printlnとstring()関数を使用する効果の違いはGOにあります...

redisstreamを使用してGo言語でメッセージキューを実装する問題は、GO言語とRedisを使用することです...

大企業または有名なオープンソースプロジェクトによって開発されたGOのどのライブラリが開発されていますか? GOでプログラミングするとき、開発者はしばしばいくつかの一般的なニーズに遭遇します...

Golandのカスタム構造ラベルが表示されない場合はどうすればよいですか?ゴーランドを使用するためにGolandを使用する場合、多くの開発者はカスタム構造タグに遭遇します...

GO言語は、効率的でスケーラブルなシステムの構築においてうまく機能します。その利点には次のものがあります。1。高性能:マシンコードにコンパイルされ、速度速度が速い。 2。同時プログラミング:ゴルチンとチャネルを介してマルチタスクを簡素化します。 3。シンプルさ:簡潔な構文、学習コストとメンテナンスコストの削減。 4。クロスプラットフォーム:クロスプラットフォームのコンパイル、簡単な展開をサポートします。

マルチプロセスのログライティングの並行性セキュリティの問題を効率的に処理します。複数のプロセスが同じログファイルを同時に書き込みます。並行性が安全で効率的であることを確認する方法は?これは...
