Go 编程语言允许您仅为其副作用导入包,例如初始化外部资源。这是通过使用空白标识符作为包名称来实现的。
使用空白标识符导入的一个实际用例是初始化数据库驱动程序时。例如,假设您想在 Go 程序中使用 github.com/mattn/go-sqlite3 驱动程序。您可以通过使用以下语法导入驱动程序,而无需显式使用任何驱动程序的导出函数来实现此目的:
import _ "github.com/mattn/go-sqlite3"
此导入语句会触发 go-sqlite3 驱动程序的初始化。驱动程序的 init 函数,定义如下:
func init() { sql.Register("sqlite3", &SQLiteDriver{}) }
在导入包时执行。此函数将 sqlite3 驱动程序注册到 sql 包,使其可供您的程序使用。
由于 init 函数,使用空白标识符的导入有效。 Go 包中的每个源文件都可以定义自己的 init 函数,该函数在包中的任何其他代码之前执行。这允许在不需要显式函数调用的情况下初始化外部资源。
当使用空白标识符导入包时,其 init 函数仍然会执行。这允许产生诸如资源初始化之类的副作用,而不会在导入包的命名空间中引入不必要的变量或函数。
以上是何时应该仅出于副作用而导入 Go 包?的详细内容。更多信息请关注PHP中文网其他相关文章!