我是Go和功能范例的新手。在golang中使用数据库连接时,我必须使用import
mysql驱动程序。我偶然发现了#34; _"这是为变量和导入包提供空白标识符,它们的副作用是soley。
搜索副作用并找到此side effects in es6
我没有理解的是函数的副作用取决于一个全局变量,它偏离了纯函数的参照透明度。但是包装怎么会带来副作用呢? 是因为对包的依赖是副作用吗?
例如:
import _ "github.com/go-sql-driver/mysql"
db, err := sql.Open("mysql", "user:password@/dbname")
这里的导入有" _"因为Open
语句依赖于驱动程序名称?
答案 0 :(得分:2)
使用_
导入感兴趣的主要副作用是init
函数的执行。包可以包括init
函数,该函数将在程序启动时执行main
之前执行。对于DB驱动程序,这用于注册驱动程序,以便您可以将其与sql.Open
一起使用; expvar
和pprof
个软件包都在init
函数中注册了HTTP处理程序,并且通常与_
个导入一起使用。