是否有可能,以及如何使用这种逻辑进行单行(或简称为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 ==“”(空字符串)
答案 0 :(得分:5)
没有这样的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
}
答案 1 :(得分:1)
在为Env变量定义默认值时,我也有类似的愿望。
我解决它的方法是定义一个函数来完成它,就像这样:
func getenv(key, fallback string) string {
value := os.Getenv(key)
if len(value) == 0 {
return fallback
}
return value
}
当我调用此函数时,它看起来就像“或”一样简洁:
port := getenv("PORT", "8000")
您可以为用例定义自己的功能。
答案 2 :(得分:0)
我认为做自己的功能很棒,但是golang有自己的方法来管理标志,这是一个例子
import (
"flag"
)
func main() {
env := flag.String("env", "dev", "description")
}
因此,这里env的默认值为dev
,您可以运行并更改它,
go run main.go -env=prod
致谢