Go での副作用のあるパッケージのインポート
go-sqlite3 ライブラリを利用するコードを調べると、次のようなインポート ステートメントに遭遇することがあります。次のように、その前にアンダースコアを付けます:
import ( "database/sql" "fmt" _ "github.com/mattn/go-sqlite3" "log" "os" )
この使用法はアンダースコアは、副作用のためだけにパッケージをインポートするための Go のメソッドです。 Go 仕様で概説されているように:
To import a package solely for its side-effects (initialization), use the blank identifier as explicit package name: import _ "lib/math"
例: go-sqlite3 Initialization
go-sqlite3 の場合、このアンダースコア インポートは登録の目的を果たします。 init() 関数を通じて sqlite3 ドライバーをデータベースドライバーとして使用します。他の関数をインポートする必要はありません。 package:
sql.Register("sqlite3", &SQLiteDriver{})
一度登録すると、次の例に示すように、sqlite3 ドライバーを標準ライブラリの SQL インターフェイスで使用できます:
db, err := sql.Open("sqlite3", "./foo.db")
以上がGo でパッケージをインポートするときにアンダースコアを使用するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。