了解匿名结构体声明之间的差异
匿名结构体是定义结构体的一种便捷方法,无需为其分配名称。它们主要用于特定结构定义并不重要或结构仅用于保存和传递数据的情况。以下代码片段演示了在 Go 中声明匿名结构体的两种方法:
<code class="go">var Foo = map[string]struct{}{ "foo": struct{}{}, }</code>
<code class="go">var Foo = map[string]struct{}{ "foo": {}, }</code>
在第一个声明中,将显式类型指定为 struct{}{}。这种多余的类型声明是不必要的,因为 Gogland 正确地将其识别为警告。当可以从上下文推断类型时,Go 允许省略复合文字中的类型。
在第二个声明中,省略了类型,从而形成 {} 形式。这有时被称为“短表示法”,因为它不需要显式指定类型。当在映射中使用复合文字时,键和值的类型都可以从映射类型本身推断出来。
因此,声明 Foo = map[string]struct{}{"foo": {}} 相当于第一个,但 Go 语言允许类型省略。这个简短的符号不会改变匿名结构的功能;这只是语法上的差异。
以上是为什么 Go 中的匿名结构声明被视为'短符号”?的详细内容。更多信息请关注PHP中文网其他相关文章!