go - 如何使用 "or"进行变量赋值

标签 go

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

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

我试着做:

a := b | "hello"

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

所以我来自JS,并试图实现:
const a = b || "hello";

但在一个“Go-way”

因为它是静态类型的 Lang,我的意思是如果 b == ""(空字符串)

最佳答案

没有像这样的 Go 语法。使用 if 语句。
| 的操作数必须是整数。 || 的操作数必须是 bool 值。

更重要的是,一个string不能是 falsenil .

鉴于 OP's actual goal是为环境变量提供默认值,测试应该在 os.LookupEnv 的 bool 返回值上进行,而不是字符串值。使用这样的函数:

func getenv(key string, def string) string {
     val, ok := os.LookupEnv(key)
     if !ok {
         val = def
     }
     return val
}

关于go - 如何使用 "or"进行变量赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58476932/

相关文章:

json - 解码 json,包括 json 编码的字符串

go - Go中如何实现虚继承

json - 如何在输入时跳过 Struct 中的 JSON 字段并在输出中显示它们,以及在输入中接受某些字段并在 Golang 中在输出中跳过它们?

go - 我应该将缓存数据保存在 Web 应用程序的内存中吗?

package - 转到包/文件位置

go - 为什么 Go 中有包声明?

go - 如何解决这个简单案例中缺少泛型的问题

go - Go 与 C++ 中的抽象基类设计

Golang http 连接无限期地持续存在

go - 这段 golang 代码有什么作用?