我正在研究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 function
在我甚至调用pkg2.Myvariable
之前就已执行。因此,简要地说:在主包中给定nil,但是在init内正确分配了值,为什么然后返回nil?我想念什么?谢谢!
最佳答案
我相信您应该将:=
更改为=
,因为这样您就可以引入新的变量。
关于go - 在init中分配的值不会保持该值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43646485/