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

时间:2017-09-21 20:03:04

标签: go environment-variables constants

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

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

const (
    secret     = os.Getenv("MY_SECRET")
    key        = os.Getenv("MY_KEY")
)

1 个答案:

答案 0 :(得分:11)

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