我正在研究Golang,对func init()的工作方式有些困惑。假设我有2个名为mainpkg2的软件包
在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/

10-09 15:06