1. ホーム
  2. 行く

[解決済み】import文の前にあるアンダースコアは何を意味するのですか?

2022-04-16 13:32:04

質問

私は見た の例です。 sqlite3 について GitHub :

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

で、import文の前にあるアンダースコアの意味がわからないようです。

どのように解決するのですか?

簡単にお答えします。

副作用のためだけにパッケージをインポートするためのものです。

から Go仕様書 :

副作用(初期化)のみを目的としてパッケージをインポートする場合、明示的なパッケージ名として空白の識別子を使用します。

インポート _ "lib/math"。

sqlite3では

の場合 go-sqlite3 を登録する副次的な効果として、アンダースコアのインポートが使用されています。 sqlite3 ドライバをデータベースドライバとして init() 関数をインポートすることなく、他の関数をインポートしています。

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

このように登録されると、sqlite3は標準ライブラリの sql インターフェイスを使用します。

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