【发布时间】:2018-01-24 16:59:49
【问题描述】:
我是 Go 和函数范式的新手。在 golang 中处理数据库连接时,我必须 import mysql 驱动程序。我遇到了“_”,这是指变量和导入包的空白标识符,它们的副作用是唯一的。
搜索副作用发现了这个side effects in es6
我不明白的是函数的副作用取决于一个全局变量,它偏离了纯函数的引用透明度。但是一个包怎么会带来副作用呢? 是不是因为依赖包的副作用?
例如:
import _ "github.com/go-sql-driver/mysql"
db, err := sql.Open("mysql", "user:password@/dbname")
这里的导入有“_”,因为Open 语句依赖于驱动程序名称?
【问题讨论】:
-
这与函数式程序员在谈论纯函数时所指的副作用无关。这里的副作用是执行了包的init函数,注册了驱动。