在Init内部分配的值不维护值

  • 本文关键字:维护 分配 Init 内部 go
  • 更新时间 :
  • 英文 :


我在Golang上工作,对func init()的工作方式有些困惑。让我们说我有2个包裹,称为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之前执行。因此,简要介绍:在主包内部给出了零,但是在ININ内部,值正确分配了,为什么它返回到零呢?我想念什么?谢谢!

我相信您应该将 :=更改为 =,因为那样您正在引入新的var。

最新更新