问题:
Go 中,在映射声明中使用匿名结构体作为值会引发 Gogland 警告,并提出问题:在这种上下文中 struct{}{} 和 {} 声明之间有什么区别?
答案:
理解这两种语法背后的语义至关重要。
通常,复合文字需要显式类型声明(例如,[]int{1, 2, 3})。但是,在使用映射时,编译器可以从映射类型本身推断键和值的类型。这允许简化复合文字语法,在提供适当类型的值时省略类型声明。
根据 Go 规范,在这些情况下,当复合文字的类型与映射期望的类型匹配时,可以省略类型声明。此行为最初是一个疏忽,但在 Go 1.5 中成为有效功能。
注意: 在初始化其他类型的复合文字(例如数组、切片)时,不能省略类型声明。
以上是Go Maps 中的匿名结构:`struct{}{}` 和 `{}` 有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!