golangを触っていてなんだこれって思ったのでメモしておく。
importのアンダースコア
サンプルコードを見ていてこんな記述を見かけた。
パッケージ名の前にアンダースコアが書かれている。
import ( "fmt" _ "github.com/go-sql-driver/mysql" // <- 先頭のアンダースコアはなにもの? )
なにこれ?
これはブランク識別子と呼ばれるもので、importしたパッケージと依存関係のあるパッケージをimportするときにこれを指定するらしい。
golangではimportしたパッケージをコード中で使用しないとコンパイルエラーとなるので、依存関係を解決するためのimportであることを明示してあげないといけない。
インポート宣言は、インポート「する側」と「される側」の依存関係を宣言します。自分自身のパッケージをインポートすること、またはインポートしたパッケージ内でエクスポートされている識別子を一切参照しないことは誤った使い方です。インポートによる副作用(初期化)のためだけにパッケージをインポートするときは、パッケージ名としてブランク識別子を使ってください。
いいわけ
正直、ちゃんと読み取れてるか自信ないので間違った解説をしているかも。
参考
The Go Programming Language Specification - The Go Programming Language
Go言語仕様翻訳(part12) - golang.jp
- 作者: 古川昇
- 出版社/メーカー: シーアンドアール研究所
- 発売日: 2015/07/17
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (2件) を見る