我是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 ==“”(空字符串)
在为Env变量定义默认值时,我有类似的愿望。
我解决问题的方法是定义一个函数来完成,就像这样:
func getenv(key, fallback string) string {
value := os.Getenv(key)
if len(value) == 0 {
return fallback
}
return value
}
当我调用此函数时,它看起来就像“或”一样简洁:
port := getenv("PORT", "8000")
您可以为用例定义自己的功能。
似乎您需要类似三元运算符的东西,但Golang没有它。
您可以检查this答案
没有这样的Go语法。使用if语句。
|
的操作数必须为整数。 ||
的操作数必须为布尔值。
此外,string
不能为false
或nil
。
鉴于OP's actual goal将为环境变量提供默认值,因此测试应基于os.LookupEnv的布尔返回值,而不是字符串值。使用如下函数:
func getenv(key string, def string) string {
val, ok := os.LookupEnv(key)
if !ok {
val = def
}
return val
}