在 go-sqlite3 的 这段代码 中:
import (
"database/sql"
"fmt"
_ "github.com/mattn/go-sqlite3"
"log"
"os"
)
import
语句中的下划线是什么意思?
原文由 Adrian 发布,翻译遵循 CC BY-SA 4.0 许可协议
虽然其他答案完全描述了它,但对于“向我展示代码”的人来说,这基本上意味着:创建包级变量并执行 init
该包的功能。
和(如果有的话)包级变量的层次结构 & init
这个包已经导入的包的函数。
一个包在没有被实际调用的情况下可以产生的唯一副作用是创建包级变量(公共或私有)并且在它内部是 init
函数。
_注意_:有一个技巧可以在 init
函数之前运行一个函数。我们可以通过使用该函数初始化它们来使用包级变量。
func theVeryFirstFunction() int {
log.Println("theVeryFirstFunction")
return 6
}
var (
Num = theVeryFirstFunction()
)
func init() { log.Println("init", Num) }
原文由 Kaveh Shahbazian 发布,翻译遵循 CC BY-SA 4.0 许可协议
7 回答5.3k 阅读
6 回答6.8k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答3.4k 阅读
2 回答935 阅读✓ 已解决
2 回答2.3k 阅读
1 回答2.2k 阅读
它仅用于导入一个包的副作用。
来自 Go 规范:
db, err := sql.Open(“sqlite3”, “./foo.db”)
”`