使用os.Getenv在golang中声明常量导致os.Getenv中的const初始化器("MY_SECRET")不是常量'

Mic*_*ael 16 constants environment-variables go

如果我声明常量如下,我得到错误'os.Getenv中的const初始化器("MY_SECRET")不是常量'.为什么是这样?

Go的新手,我看到Getenv的返回类型是一个字符串,但我不明白为什么这不会作为一个常量.

const (
    secret     = os.Getenv("MY_SECRET")
    key        = os.Getenv("MY_KEY")
)
Run Code Online (Sandbox Code Playgroud)

Adr*_*ian 15

就像错误所说的那样,常量必须具有常量值.您无法将其设置为函数的返回值.它必须在编译时进行评估(例如字符串文字).如果要存储在运行时查找的环境变量的值,则必须将它们存储在变量中,而不是常量中.

  • 很简单,认为它与编译时间有关。谢谢你。不知道为什么人们会投票反对我之前在 SO 上没有看到的合法问题 (3认同)