Go:包和 go 工具-空导入

时间:2025-04-17 08:17:57

通常,导入包却未在文件中引用包名,会引发编译错误。但有时导入包仅为利用其副作用,如执行包级别变量初始化表达式求值及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 支持 ),实现按需加载驱动 。