如何在golang中使用“或”进行变量赋值

问题描述 投票:0回答:3

我是golang的新手,有可能,以及如何使用这样的逻辑进行单行(或简短)的var赋值:

a := b (or if b is false, nil or undifined, then a equals to) "hello"  

我尝试制作:

a := b | "hello"

但出现错误:“运算符|未在字符串上定义”。

所以我来自JS,正在尝试实现:

const a = b || "hello";

但以“前进方式”

更新:抱歉,因为它是静态类型的Lang,所以如果b ==“”(空字符串)

javascript go
3个回答
0
投票

在为Env变量定义默认值时,我有类似的愿望。

我解决问题的方法是定义一个函数来完成,就像这样:

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

当我调用此函数时,它看起来就像“或”一样简洁:

port := getenv("PORT", "8000")

您可以为用例定义自己的功能。


0
投票

似乎您需要类似三元运算符的东西,但Golang没有它。

您可以检查this答案


0
投票

没有这样的Go语法。使用if语句。

|的操作数必须为整数。 ||的操作数必须为布尔值。

此外,string不能为falsenil

鉴于OP's actual goal将为环境变量提供默认值,因此测试应基于os.LookupEnv的布尔返回值,而不是字符串值。使用如下函数:

func getenv(key string, def string) string {
     val, ok := os.LookupEnv(key)
     if !ok {
         val = def
     }
     return val
}
© www.soinside.com 2019 - 2024. All rights reserved.