是为了引入包而不直接使用这个包中定义的函数,变量等资源。
如果引入包但不使用会报错,前面加个下划线就可以绕开这个问题。
例如MySQL连接初始化
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
)
var (
Db *sql.DB
err error
)
func main() {
Db, err = sql.Open("mysql", "root:root@tcp(localhost:3306)/db")
}
在创建 sql.DB 之后不能直接使用,需要根据数据库类型做初始化。
引入mysql数据库驱动包之后会自动去调用其中的 init 函数,然后在 init 函数里面注册这个数据库驱动,这样我们就可以在接下来的业务逻辑中直接使用这个数据库驱动了。