当前位置: 首页 > 知识库问答 >
问题:

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

丌官飞章
2023-03-14

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

在Python中,我可以做mongo_password=os.getenv('MONGO_PASS','通过')其中通过是默认值,如果MONGO_PASSenv var未设置。

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

共有3个答案

艾令秋
2023-03-14

Go 在这里没有与 Python 完全相同的功能;不过,我能想到的最惯用的方法是:

mongo_password := "pass"
if mp := os.Getenv("MONGO_PASS"); mp != "" {
    mongo_password = mp
}
荀振国
2023-03-14

您正在寻找的是<code>操作系统。LookupEnv与if语句组合。

以下是janos更新使用LookupEnv的回答:

func getEnv(key, fallback string) string {
    value, exists := os.LookupEnv(key)
    if !exists {
        value = fallback
    }
    return value
}
景鹏飞
2023-03-14

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

但是您总是可以创建一个助手函数来简化这一过程:

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

请注意,正如@michael hausenblas在评论中指出的那样,请记住,如果环境变量的值真的为空,那么您将得到回退值。

正如@ŁukaszWojciechowski指出的那样,使用操作系统甚至更好。查找环境:

func getEnv(key, fallback string) string {
    if value, ok := os.LookupEnv(key); ok {
        return value
    }
    return fallback
}
 类似资料:
  • 问题内容: 如果在Go中未设置环境变量,如何分配默认值? 在Python中,如果未设置env var,我可以在哪里设置默认值。 我尝试了基于空的if语句,但是由于if语句中变量赋值的范围,这似乎不起作用。而且我正在检查多个env var,因此无法在if语句中对这些信息进行操作。 问题答案: 没有内置功能可以还原为默认值,因此您必须执行良好的老式if-else。 但是,您始终可以创建一个辅助函数来简

  • 我正在使用Freemarker构建一个Liferay应用程序显示模板。模板使用循环迭代一组实体(期刊文章)。模板使用了几个类型为Date和time的变量。我如何在循环的每次迭代中重置这些变量或检查“空”? 假设我们在循环中有以下代码,在循环的某些交互中,“starthour”可能是空的: 在我的循环中设置了变量之后。无论我尝试什么,当我在Liferay中使用我的脚本时,总是会出现这样的错误: 那么

  • 问题内容: 我正在使用WAMP。我想从命令提示符下使用php。为此,PATH env变量中的条目是什么? 问题答案: 你需要把具有目录在您安装到您。通常是这样的

  • 当用Katalon Studio定义测试用例变量时,我如何将他的默认值设置为全局变量值?

  • 我运行SonarQube有两个质量配置文件: 第一,默认的“声纳方式”。第二,“声纳方式与FindBugs。 SQ成功地对两个配置文件执行分析,并在.sonar文件夹中生成html报告。 但我看不到仪表板中“声纳方式与FindBugs”的分析结果。即使在“quality Profiles”设置中将质量配置文件设置为默认配置文件并从头运行分析之后,当我进入仪表板时,SQ仍然显示使用默认配置文件“So

  • 问题内容: 我想在一个类中构建一个方法,并从该类中获取默认值参数。通常,我会对某些数据进行过滤。在我的班级内部,我有一个方法,通常我会传递数据向量。有时我没有矢量,而是获取了模拟数据。每次我不传递特定向量时,我都希望默认情况下获取模拟数据。我认为在我说的方法定义中应该很容易构造。但是由于某种原因,我有一个错误。简化的结构是: 我期望的输出应该是: 我尝试了默认分配,因为它显然无法正常工作。据我了解