一尘不染

如果env var为空,如何分配默认值?

go

如果在Go中未设置环境变量,如何分配默认值?

在Python中mongo_password = os.getenv('MONGO_PASS', 'pass')pass如果MONGO_PASS未设置env var,我可以在哪里设置默认值。

我尝试了基于os.Getenv空的if语句,但是由于if语句中变量赋值的范围,这似乎不起作用。而且我正在检查多个env
var,因此无法在if语句中对这些信息进行操作。


阅读 245

收藏
2020-07-02

共1个答案

一尘不染

没有内置功能可以还原为默认值,因此您必须执行良好的老式if-else。

但是,您始终可以创建一个辅助函数来简化此工作:

func getenv(key, fallback string) string {
    value := os.Getenv(key)
    if len(value) == 0 {
        return fallback
    }
    return value
}

请注意,正如@ michael-hausenblas在评论中指出的那样,请记住,如果环境变量的值确实为空,则将获得后备值。

如@ŁukaszWojciechowski所指出的,甚至更好,使用os.LookupEnv

func getEnv(key, fallback string) string {
    if value, ok := os.LookupEnv(key); ok {
        return value
    }
    return fallback
}
2020-07-02