在 Go 中导入有副作用的包
在检查使用 go-sqlite3 库的代码时,可能会遇到带有以下内容的 import 语句:其前面有下划线,类似于以下内容:
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 初始化
对于 go-sqlite3,此下划线导入用于注册的目的通过 init() 函数将 sqlite3 驱动程序作为数据库驱动程序,而不需要从package:
sql.Register("sqlite3", &SQLiteDriver{})
注册后,sqlite3 驱动程序可以与标准库的 sql 接口一起使用,如以下示例所示:
db, err := sql.Open("sqlite3", "./foo.db")
以上是为什么在 Go 中导入包时使用下划线?的详细内容。更多信息请关注PHP中文网其他相关文章!