通常,我会初始化一个结构,如:
Child
但是,我最近看到用parens初始化代码:
Child
value2
返回相同的Child::print()
名称。
括号中的初始化是什么以及何时首选?
这里有一些Go代码试试这个:
答案 0 :(得分:10)
没有什么特别的,这2行是相同的。
但是,如果要在if
语句中使用它,则需要使用括号,否则会出现编译时错误:
if i := Item{3, "a"}; i.Id == 3 {
}
结果:
期望的布尔表达式,找到简单的语句(复合文字周围缺少括号?)(还有1个错误)
这是因为出现了解析模糊性:如果开括号是复合文字的一部分或if
语句的主体,则不明显。
使用括号将使编译器明确无误,因此可行:
if i := (Item{3, "a"}); i.Id == 3 {
}
有关详细信息,请参阅:Struct in for loop initializer