登录
首页 >  Golang >  Go教程

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

时间:2024-11-08 20:54:48 431浏览 收藏

Golang小白一枚,正在不断学习积累知识,现将学习到的知识记录一下,也是将我的所得分享给大家!而今天这篇文章《Go 中如何解决在 init 函数内修改导出变量无法生效的问题?》带大家来了解一下##content_title##,希望对大家的知识积累有所帮助,从而弥补自己的不足,助力实战开发!


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

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

在 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 函数内修改导出变量无法生效的问题?》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>