如果 env var 为空,如何分配默认值? [英] How to assign default value if env var is empty?

查看:30
本文介绍了如果 env var 为空,如何分配默认值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

How do you assign a default value if an environment variable isn't set in Go?

在 Python 中,我可以执行 mongo_password = os.getenv('MONGO_PASS', 'pass') 其中 pass 是默认值,如果 MONGO_PASS 未设置环境变量.

In Python I could do mongo_password = os.getenv('MONGO_PASS', 'pass') where pass is the default value if MONGO_PASS env var isn't set.

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

I tried an if statement based on os.Getenv being empty, but that doesn't seem to work due to the scope of variable assignment within an if statement. And I'm checking for multiple env var's, so I can't act on this information within the if statement.

推荐答案

没有内置回退到默认值,所以你必须做一个好的老式if-else.

There's no built-in to fall back to a default value, so you have to do a good old-fashioned if-else.

但是你总是可以创建一个辅助函数来简化它:

But you can always create a helper function to make that easier:

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

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

Note that as @michael-hausenblas pointed out in a comment, keep in mind that if the value of the environment variable is really empty, you will get the fallback value instead.

使用 @ŁukaszWojciechowski 指出,使用 os.LookupEnv:

Even better as @ŁukaszWojciechowski pointed out, using os.LookupEnv:

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

这篇关于如果 env var 为空,如何分配默认值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆