gpt4 book ai didi

go - 导入副作用

转载 作者:数据小太阳 更新时间:2023-10-29 03:32:51 26 4
gpt4 key购买 nike

我是 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 函数的执行。一个包可以包含一个 init 函数,该函数将在程序启动时执行,然后再执行 main 。对于数据库驱动程序,这用于注册驱动程序,以便您可以将其与 sql.Open 一起使用; expvarpprof 包都在它们的 init 函数中注册 HTTP 处理程序,并且同样经常与 _ 导入一起使用。

这记录在 Go spec section on package initialization 中.

关于go - 导入副作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48427872/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com