您的位置 首页 知识分享

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

无法在 mn 中访问导入包的导出变量 在 go 中,导入包时,包中导出的变量和函数都可以被访问。但是,有时访问…

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

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

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

考虑以下代码:

  • utils 包:
package utils  import "fmt"  var globalvar = 1
登录后复制
  • main 包:
package main  import (     "data_push/utils" )  func main() {     fmt.println(utils.globalvar) }
登录后复制

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

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

package utils  import "fmt"  var globalvar = 1  func init() {     globalvar = 2 }
登录后复制
登录后复制

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

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

package utils  import "fmt"  var globalvar = 1  func init() {     globalvar = 2 }
登录后复制
登录后复制

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

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

本文来自网络,不代表甲倪知识立场,转载请注明出处:http://www.spjiani.cn/wp/4652.html

作者: nijia

发表评论

您的电子邮箱地址不会被公开。

联系我们

联系我们

0898-88881688

在线咨询: QQ交谈

邮箱: email@wangzhan.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部