You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 09:10:39