通常,导入包却未在文件中引用包名,会引发编译错误。但有时导入包仅为利用其副作用,如执行包级别变量初始化表达式求值及init
函数 。为避免 “未使用的导入” 错误,需使用重命名导入,用替代名字_
,即空导入 ,导入内容为空白标识符,一般不可被引用,示例:import _ "image/png" // 注册PNG解码器
。
import (
"database/sql"
_ "github.com/lib/pq" // 添加 Postgres 支持
_ "github.com/go-sql-driver/mysql" // 添加 MySQL 支持
)
db, err := sql.Open("postgres", dbname) // OK
db, err := sql.Open("mysql", dbname) // OK
db, err := sql.Open("sqlite3", dbname) // 返回错误消息: unknown driver "sqlite3"
以database/sql
包为例,可按需空导入数据库驱动包(如_ "github.com/lib/pq"
添加 Postgres 支持、_ "github.com/go - sql - driver/mysql"
添加 MySQL 支持 ),实现按需加载驱动 。