我在 Golang 上工作,对 func init()
的工作原理有点困惑。假设我有 2 个名为 main
和 pkg2
的包
在 main 中,我试图调用 pkg2 中的一个变量,但它给了我 nil。基本上这是结构:
主包:
import (
...
"github.com/myproject/config/pkg2"
)
func main () {
if pkg2.Myvariable == nil {
//it's nil. And it's entering in this conditional don't know why
}
}
PKG2 封装:
package pkg2
import (
...some imports...
)
var MyVariable
func init () {
MyVariable := "something"
//Here I assign a value to MyVariable
//I set an if here to check if it's executed
//and MyVariable get a value correctly
}
我还注意到 init 函数
在我调用 pkg2.Myvariable
之前执行。所以,简而言之:在 main 包中它被赋予了 nil,但是在 init 中正确分配了值,为什么然后它返回 nil?
我错过了什么?谢谢!
最佳答案
我认为您应该将 :=
更改为 =
,因为这样您就引入了一个新变量。
关于go - init 内部分配的值不维护该值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43646485/