我在Golang上工作,对func init()
的工作方式有些困惑。让我们说我有2个包裹,称为main
和pkg2
在Main内部,我试图调用PKG2内部的变量,但它为我提供了零。基本上这是结构:
主包:
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
之前执行。因此,简要介绍:在主包内部给出了零,但是在ININ内部,值正确分配了,为什么它返回到零呢?我想念什么?谢谢!
我相信您应该将 :=
更改为 =
,因为那样您正在引入新的var。