在 Go 中初始化结构体时,使用括号不是必需的,但在某些情况下可能是首选。
通常,结构体使用大括号进行初始化,如下所示:
item1 := Item{1, "Foo"}
但是,使用括号初始化结构体同样有效:
item2 := (Item{2, "Bar"})
这两行都创建 Item 结构体的实例,并将它们分别分配给 item1 和 item2。两个结构体上的反射将返回相同的名称。
括号主要用于在 if 语句中使用结构体初始化时消除语法歧义。如果没有括号,下面的代码将导致编译错误:
if i := Item{3, "a"}; i.Id == 3 {
}
编译器无法确定左大括号属于复合文字还是 if 语句体。添加括号可以解决这种歧义:
if i := (Item{3, "a"}); i.Id == 3 {
}
在这种情况下,括号明确指示复合文字是分配给 i 的值。有关更多详细信息,请参阅“for 循环初始值设定项中的结构”页面。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3