go - init 内部分配的值不维护该值

标签 go

我在 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 函数 在我调用 pkg2.Myvariable 之前执行。所以,简而言之:在 main 包中它被赋予了 nil,但是在 init 中正确分配了值,为什么然后它返回 nil? 我错过了什么?谢谢!

最佳答案

我认为您应该将 := 更改为 =,因为这样您就引入了一个新变量。

关于go - init 内部分配的值不维护该值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43646485/

相关文章:

go - 如何知道结构或结构指针是否实现接口(interface)

go - 如何从另一个请求返回一个主体

http - 向 Struct 添加一些日期,然后将其放入 go 模板中

go - 什么是“|” Go中的运算符?

postgresql - postgres 抛出错误 : null value in column "id" violates not-null constraint even when value is actually not null

dictionary - 映射重复键值对(如果不存在)

golang语法错误: unexpected in struct

memory - 哪种 channel 类型在 Go 中使用最少的内存?

go - 关于VerifyPKCS1v15(base64和rsa校验)

go - Firebase 云消息传递授权失败