无法在 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