在javascript中我们可以这样做:
var x string = expr1 || expr2
如果expr1
不是undefined
,则会将其复制到x
,如果是undefined
,expr2
将被复制到x
}。在go中,我们可以使用:
if expr1 == "" { var string x = expr1 } else { var string x = expr2 }
这有简写吗?如果没有,为什么?
答案 0 :(得分:4)
我不知道"为什么"但是你可以随时使用它:
var a []string = expr1
if a == nil {
a = expr2
}
答案 1 :(得分:4)
The Go Programming Language Specification
声明将非空标识符绑定到常量类型, 变量,函数,标签或包。程序中的每个标识符 必须宣布。
当分配内存来存储值时,通过a 声明或调用make或new,并且没有明确的初始化 如果提供,则为存储器提供默认初始化。每 将此类值的元素设置为其类型的零值:false 对于布尔值,0表示整数,0.0表示浮点数,""对于字符串,没有 用于指针,函数,接口,切片,通道和地图。
Go是一种静态类型语言。所有变量必须在编译时声明,并且它们具有明确定义的初始值。 JavaScript是一种动态类型语言。变量在运行时声明。因此,JavaScript构造在Go中没有任何意义。