Go 如何使用“变量赋值”;或;
是否可能,以及如何使用这种逻辑进行一行(或简短)var分配:Go 如何使用“变量赋值”;或;,go,Go,是否可能,以及如何使用这种逻辑进行一行(或简短)var分配: a:=b(或者如果b为false、nil或undefined,那么a等于“hello” 我试图做到: a:=b |“你好” 但得到一个错误:“运算符|未在字符串上定义” 因此,我来自JS,并试图实现: const a = b || "hello"; 但以“走的方式” 由于它是静态类型的Lang,我的意思是,如果b==“”(空字符串)就没有这样的Go语法。使用if语句 |的操作数必须是整数。|的操作数必须是布尔数 而且,字符串不能
a:=b(或者如果b为false、nil或undefined,那么a等于“hello”
我试图做到:
a:=b |“你好”
但得到一个错误:“运算符|未在字符串上定义”
因此,我来自JS,并试图实现:
const a = b || "hello";
但以“走的方式”
由于它是静态类型的Lang,我的意思是,如果b==“”(空字符串)就没有这样的Go语法。使用if语句
|
的操作数必须是整数。|
的操作数必须是布尔数
而且,字符串
不能是false
或nil
假设这是为环境变量提供默认值,那么测试应该是来自的布尔返回值,而不是字符串值。使用如下函数:
func getenv(key string, def string) string {
val, ok := os.LookupEnv(key)
if !ok {
val = def
}
return val
}
func getenv(key, fallback string) string {
value := os.Getenv(key)
if len(value) == 0 {
return fallback
}
return value
}
在为Env变量定义默认值时,我也有类似的愿望 我解决这个问题的方法是定义一个函数来实现它,如下所示:
func getenv(key string, def string) string {
val, ok := os.LookupEnv(key)
if !ok {
val = def
}
return val
}
func getenv(key, fallback string) string {
value := os.Getenv(key)
if len(value) == 0 {
return fallback
}
return value
}
当我调用此函数时,它看起来就像“or”一样简洁:
port := getenv("PORT", "8000")
您可以根据自己的用例定义自己的函数。我认为自己的函数很好,但golang有自己的方法来管理标志,这里就是一个例子
import (
"flag"
)
func main() {
env := flag.String("env", "dev", "description")
}
因此,这里env的默认值是dev
,您可以通过
go run main.go -env=prod
这是go,不是JS。Go是静态类型的。所以在这一点上,b不能是未定义的,它可以是nil(这意味着它是指针或引用类型之一),也可以是false,这意味着它是bool。所以你想做的是不可能的,在围棋中没有多大意义。主要是因为值是类型不变的。也就是说,如果
b
是一个字符串,那么它不能是nil、false、undefined或nan或其他定义的类型,它必须是一个字符串。至于智能声明和语法糖,Go不会让你太高兴。考虑到你的目标,请看Cerise Limón,在这个特殊的例子中,是的,但一般来说,我一直在搜索所需的语法(但正如许多人所说,这在语言中是不可能的)哦,是的,谢谢,我需要它正是为了定义Env vars的默认值