回答

收藏

导入语句前面的下划线是什么意思?

技术问答 技术问答 286 人阅读 | 0 人回复 | 2023-09-12

我看到了这个例子sqlite3上GitHub:
$ j4 |9 x6 J& j5 i. o4 `
    import (       "database/sql"        "fmt"        _ "github.com/mattn/go-sqlite3"        "log"        "os")
    # P% N! H7 i7 S
而且似乎找不到 import 句子前面的下划线是什么意思?
* W' D4 J; ^) F& U" s                                                                4 b8 Y9 w' v# D8 m: J# G8 n; _
    解决方案:                                                               
/ g5 m/ D! n# m/ `7 p+ Q8 m                                                                简短回答:仅用于导入包的副作用。
2 r' `0 G+ w% t1 ?+ W  [从Go 规范:
0 Y$ c, @# q  `* n8 E/ u0 L) p# `' F要仅为其副作用(初始化)导入包,请使用空白标识符作为显式包名称:
  z8 v5 [& i2 E/ B导入_“lib/数学”4 T; G  }6 Z' e' }/ M7 \
在 sqlite3 中在go-sqlite3的情况下,下划线导入用于sqlite3在init()将驱动程序注册为数据库驱动程序的副作用,而不导入任何其他函数:
4 J4 B" J" x! L! l# Y5 c) x
    sql.Register("sqlite3",&SQLiteDriver{})
    ( @% [' F  F/ ?4 i$ s/ i
这样注册,sqlite3 就可以sql与标准库的接口一起使用您的代码,如示例所示:
- m* j3 j4 [* Q, H
    db,err := sql.Open("sqlite3","./foo.db")
    / y* w! L' Z7 E8 X  S+ F- M" D, Y
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则