インポート文の前のアンダースコアは何を意味しますか? 質問する

インポート文の前のアンダースコアは何を意味しますか? 質問する

このコードgo-sqlite3 から:

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

文中の下線はどういうimport意味ですか?

ベストアンサー1

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

からGo仕様:

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

import _ "lib/math"

sqlite3の場合

の場合go-sqlite3アンダースコアのインポートは、他の関数をインポートせずに、関数sqlite3内でドライバーをデータベース ドライバーとして登録するという副作用のために使用されます。init()

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

sqlこのように登録すると、次の例のように、コード内で標準ライブラリのインターフェースを使用して sqlite3 を使用できるようになります。

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

おすすめ記事