Go语言中struct的连续双大括号「struct{}{}」是什么含义?
Go中map内匿名结构体写法解析
你贴的代码里,struct { price float64 }{"chicken", 1.75}是匿名结构体定义+实例化的组合写法,拆成两部分看:
struct { price float64 }:这是直接定义了一个没有名字的结构体类型(匿名结构体),里面声明了一个price字段,类型为float64。{"chicken", 1.75}:这是对刚定义的匿名结构体进行实例化,尝试给字段赋值。不过这里有个明显问题:结构体只有一个float64类型的字段,但初始化时传了字符串"chicken"和浮点数1.75,类型和数量都不匹配,实际编译会报错。正确的初始化写法应该只传一个浮点数,比如{1.75}。
这种写法的好处是,当你只需要临时用一次结构体,不想单独命名定义时,可以直接在赋值场景里就地定义并实例化,省去单独声明类型的步骤,比如这里就直接把这个匿名结构体实例作为map的值存入了。
正确的示例代码如下:
menu := map[string]interface{}{ "icecream": "delicious", "eggs": struct { price float64 }{1.75}, }
内容的提问来源于stack exchange,提问作者Uranus_ly
相关产品推荐
相关产品推荐

