我正在研究Golang,对func init()
的工作方式感到有些困惑。让我们说我有两个名为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
之前执行。所以,简单地说:在主程序包内部给出nil,但是在init内部正确分配了值,为什么它返回nil?
我错过了什么?谢谢!
答案 0 :(得分:5)
我相信您应该将:=
更改为=
,因为这样您就会引入新的var。