首页 > 后端开发 > Golang > 初始化 Go 结构体时什么时候需要括号?

初始化 Go 结构体时什么时候需要括号?

DDD
发布: 2024-11-03 00:06:02
原创
1034 人浏览过

When do you need parentheses when initializing Go structs?

使用括号初始化 Go 结构体

在 Go 中初始化结构体时,不需要使用括号,但在某些情况下可以首选。

通常,结构体是使用大括号初始化的,如图所示在:

<code class="go">item1 := Item{1, "Foo"}</code>
登录后复制

但是,用括号初始化结构体同样有效:

<code class="go">item2 := (Item{2, "Bar"})</code>
登录后复制

这两行都创建 Item 结构体的实例,并将它们分别分配给 item1 和 item2。两个结构体上的反射将返回相同的名称。

括号主要用于在 if 语句中使用结构体初始化时消除语法歧义。如果没有括号,以下代码将导致编译错误:

<code class="go">if i := Item{3, "a"}; i.Id == 3 {
}</code>
登录后复制

编译器无法确定左大括号是属于复合文字还是属于 if 语句体。添加括号可以解决这种歧义:

<code class="go">if i := (Item{3, "a"}); i.Id == 3 {
}</code>
登录后复制

在这种情况下,括号明确指示复合文字是分配给 i 的值。有关更多详细信息,请参阅“for 循环初始值设定项中的结构”页面。

以上是初始化 Go 结构体时什么时候需要括号?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板