謎に満ちたプログラミングの世界では、特定のシンボルが隠された力を持っています。そのような記号の 1 つはアンダースコアで、インポート ステートメントの接頭辞として頻繁に使用されます。この記事では、この謎のキャラクターの謎めいた目的を解明します。
人気のある go-sqlite3 ライブラリの次のコード スニペットを考えてみましょう:
import ( "database/sql" "fmt" _ "github.com/mattn/go-sqlite3" "log" "os" )
import ステートメントの前にあるアンダースコアは何を意味しますか? 「github.com/mattn/go-sqlite3」の意味?
このコンテキストにおけるアンダースコア副作用のためだけにパッケージをインポートするという特定の目的を果たします。 Go 仕様では次の説明が提供されています:
「副作用 (初期化) のためだけにパッケージをインポートするには、明示的なパッケージ名として空の識別子を使用します:」
Go の場合-sqlite3、アンダースコアのインポートは重要なタスクを実行します。これにより、追加の関数をインポートせずに、init() 関数内で sqlite3 ドライバーをデータベース ドライバーとして登録するという副作用が有効になります。この登録により、標準ライブラリの SQL インターフェイスを使用して sqlite3 とシームレスに対話できるようになります。
db, err := sql.Open("sqlite3", "./foo.db")
つまり、インポート ステートメントのアンダースコアはサイレント ガーディアンであり、副作用のためにパッケージを微妙に登録します。前面には現れないかもしれませんが、その影響は否定できません。
以上がGo import ステートメントのアンダースコアは何を意味しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。