Go 中如何解决在 init 函数内修改导出变量无法生效的问题?

go 中如何解决在 init 函数内修改导出变量无法生效的问题?

无法在 main 中访问导入包的导出变量

在 go 中,导入包时,包中导出的变量和函数都可以被访问。但是,有时访问导出变量会出现问题。

考虑以下代码:

utils 包:

package utilsimport "fmt"var globalvar = 1

登录后复制main 包:

package mainimport (    "data_push/utils")func main() {    fmt.println(utils.globalvar)}

登录后复制

上述代码会正确地打印 utils.globalvar 的值 1。

然而,如果在 utils 包的 init 函数中重新赋值了导出变量,就会出现问题:

package utilsimport "fmt"var globalvar = 1func init() {    globalvar = 2}

登录后复制登录后复制

此时,main 包中输出的 globalvar 值仍然是 1,而不是预期的 2。这是因为 init 函数中使用了 := 赋值,导致在 init 函数作用域内创建了一个局部变量,覆盖了全局变量。

要解决此问题,可以在 init 函数中使用 = 赋值,这样可以更新全局变量的值。

package utilsimport "fmt"var globalvar = 1func init() {    globalvar = 2}

登录后复制登录后复制

修改后的代码可以正常在 main 函数中打印 globalvar 的值 2。

以上就是Go 中如何解决在 init 函数内修改导出变量无法生效的问题?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2314153.html

(0)
上一篇 2025年2月28日 13:46:20
下一篇 2025年2月25日 03:43:00

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论