ホームページ バックエンド開発 Golang Go言語のパッケージとは何ですか

Go言語のパッケージとは何ですか

Jan 11, 2023 am 10:19 AM
golang 言語を移動 バッグ

パッケージは複数の 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 言語パッケージの初期化には次の特徴があります:Go言語のパッケージとは何ですか

  • パッケージ初期化プログラムは、main 関数によって参照されるパッケージから開始され、他のパッケージを参照しないパッケージが見つかるまで段階的にパッケージ参照を検索し、最後に有向非巡回グラフを生成します。パッケージ参照の。

  • Go コンパイラは、有向非巡回グラフをツリーに変換し、ツリーのリーフ ノードから開始して層ごとにパッケージを初期化します。

  • 単一パッケージの初期化プロセスは上図のように、最初に定数が初期化され、次にグローバル変数が初期化され、最後にパッケージの init 関数が実行されます。

Golang パッケージの使用法の概要

Go 言語のソース コード編成では、パッケージの形式を使用します。 Go 言語の main 関数は、main パッケージ内のシステムによってのみ実行できます。

【関連する推奨事項: Go ビデオ チュートリアル プログラミング教育

以上がGo言語のパッケージとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Go's Crawler Collyのキュースレッドの問題は何ですか? Go's Crawler Collyのキュースレッドの問題は何ですか? Apr 02, 2025 pm 02:09 PM

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

GOの浮動小数点番号操作に使用されるライブラリは何ですか? GOの浮動小数点番号操作に使用されるライブラリは何ですか? Apr 02, 2025 pm 02:06 PM

GO言語の浮動小数点数操作に使用されるライブラリは、精度を確保する方法を紹介します...

Goでは、Printlnとstring()関数を備えた文字列を印刷すると、なぜ異なる効果があるのですか? Goでは、Printlnとstring()関数を備えた文字列を印刷すると、なぜ異なる効果があるのですか? Apr 02, 2025 pm 02:03 PM

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

Redisストリームを使用してGO言語でメッセージキューを実装する場合、user_idタイプの変換の問題を解決する方法は? Redisストリームを使用してGO言語でメッセージキューを実装する場合、user_idタイプの変換の問題を解決する方法は? Apr 02, 2025 pm 04:54 PM

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

GOのどのライブラリが大企業によって開発されていますか、それとも有名なオープンソースプロジェクトによって提供されていますか? GOのどのライブラリが大企業によって開発されていますか、それとも有名なオープンソースプロジェクトによって提供されていますか? Apr 02, 2025 pm 04:12 PM

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

Golandのカスタム構造ラベルが表示されない場合はどうすればよいですか? Golandのカスタム構造ラベルが表示されない場合はどうすればよいですか? Apr 02, 2025 pm 05:09 PM

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

Golangの目的:効率的でスケーラブルなシステムの構築 Golangの目的:効率的でスケーラブルなシステムの構築 Apr 09, 2025 pm 05:17 PM

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

マルチプロセスログを作成するときに、同時性が安全で効率的であることを確認する方法は? マルチプロセスログを作成するときに、同時性が安全で効率的であることを確認する方法は? Apr 02, 2025 pm 03:51 PM

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

See all articles