「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Go でのアンダースコアインポートの目的は何ですか?

Go でのアンダースコアインポートの目的は何ですか?

2024 年 12 月 21 日に公開
ブラウズ:176

What's the Purpose of Underscore Imports in Go?

アンダースコア import ステートメントについて

Go プログラミングの世界では、import ステートメントの前にあるアンダースコア文字 ( _ ) は特別な意味を持ちます。その意味と使用法を調べてみましょう。

アンダースコア インポートの目的

インポート ステートメント内のアンダースコア (_ ) は、パッケージが副作用のためだけにインポートされることを示します。パッケージから関数、メソッド、変数はインポートされません。

Go パッケージの副作用

一部の Go パッケージには、初期化関数 (通常は init() という名前) があり、パッケージがインポートされます。これらのアクションには、カスタム データベース ドライバーの登録、グローバル変数の初期化、ログの構成などが含まれます。

副作用のためのアンダースコア インポート

副作用だけのためにパッケージをインポートするには、アンダースコア識別子は次のとおりです。 import ステートメントで明示的なパッケージ名として使用されます。たとえば、 go-sqlite3:

import (
    "database/sql"
    "fmt"
    _ "github.com/mattn/go-sqlite3"
    "log"
    "os"
)

この場合、「github.com/mattn/go-sqlite3」のアンダースコアインポートにより、sqlite3ドライバーが標準SQLライブラリに登録されます。これにより、そのパッケージから関数をインポートすることなく、コード内で sqlite3 をデータベース接続として使用できるようになります。

SQLite3 ドライバーの登録

go-sqlite3 の場合、次の初期化コードパッケージがインポートされるときに実行されます:

sql.Register("sqlite3", &SQLiteDriver{})

この登録により、次のように sqlite3 を使用できるようになります:

db, err := sql.Open("sqlite3", "./foo.db")

結論

Go のアンダースコアインポートステートメントは、副作用のためだけにパッケージをインポートする便利な方法です。これらを使用すると、関数や変数を明示的にインポートせずに、パッケージ初期化ルーチンを利用できます。アンダースコア インポートの目的と使用法を理解することで、Go プロジェクトでのパッケージの依存関係と副作用を効果的に管理できます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3