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

新手上路,请多包涵

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

在 Python 中,我可以做 mongo_password = os.getenv('MONGO_PASS', 'pass') 其中 pass 是默认值,如果 MONGO_PASS env var 没有设置。

我尝试了一个基于 os.Getenv 的 if 语句为空,但由于 if 语句中变量赋值的范围,这似乎不起作用。而且我正在检查多个环境变量,所以我不能在 if 语句中对这些信息采取行动。

原文由 Ryan Clair 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 480
2 个回答

没有回退到默认值的内置函数,所以你必须做一个很好的老式 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
}

原文由 janos 发布,翻译遵循 CC BY-SA 3.0 许可协议

您正在寻找的是 os.LookupEnvif 语句相结合。

这是更新为使用 LookupEnv 的 janos 答案:

 func getEnv(key, fallback string) string {
    value, exists := os.LookupEnv(key)
    if !exists {
        value = fallback
    }
    return value
}

原文由 puradox 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏