这可以在python / JavaScript中实现:
# Python:
a = ""
b = "test"
c = a or b # test
// javascript
a = "";
b = "test";
c = a || b; // test
字符串
在go中不做一些条件块也能做到这一点吗?到目前为止,我唯一能做到这一点的方法是使用条件块。
a := ""
b := "test"
var c
if a {
c = a
} else {
c = b
}
型
我想这是答案是“不,这不能做”,但我想我会问只是以防万一我错了.这里的例子是简化.变量a
和b
可能已经定义很久以前.
2条答案
按热度按时间iyr7buue1#
来自golang FAQ,
There is no ternary testing operation in Go. You may use the following to achieve the same result:
字符串
w7t8yxp52#
Go 1.22
如果你想分配第一个非零值,从Go 1.22开始,你可以使用
cmp.Or
。它基本上就像JavaScript??
或某些数据库引擎中的COALESCE()
函数中的“合并”运算符。字符串
显然,你也可以赋值给一个现有的变量;它可以方便地简化“if-nil-assign”习惯用法:
型
该函数是可变参数的,因此它可以接受任意数量的参数。唯一的问题是它在
T comparable
中也是泛型的,因此在示例化后,varargs必须具有相同的类型。有关此详细信息,请参阅任何/interface{}作为约束与参数类型之间的区别?