在init中分配的值不会保持值

时间:2017-04-27 00:03:04

标签: go

我正在研究Golang,对func init()的工作方式感到有些困惑。让我们说我有两个名为mainpkg2的软件包 在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? 我错过了什么?谢谢!

1 个答案:

答案 0 :(得分:5)

我相信您应该将:=更改为=,因为这样您就会引入新的var。