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

Go匿名嵌套结构体初始化报错:missing type in composite literal

Go匿名嵌套结构体初始化错误修复及相关问题解答

错误原因与修复方案

你遇到的missing type in composite literal错误,是因为Go在初始化嵌套匿名结构体字段时,要求显式指定该字段对应的匿名结构体类型字面量。修复后的代码如下:

func wrapHal(selfHref string) interface{} {
    return struct {
        _links struct {
            self struct {
                href string
            }
        }
    }{
        _links: struct {
            self struct {
                href string
            }
        }{
            self: struct{ href string }{href: selfHref},
        },
    }
}

如果觉得重复写结构体定义繁琐,也可以先为嵌套的匿名结构体定义类型别名,简化初始化代码:

func wrapHal(selfHref string) interface{} {
    type selfLink struct {
        href string
    }
    type links struct {
        self selfLink
    }
    return struct {
        _links links
    }{
        _links: links{self: selfLink{href: selfHref}},
    }
}

Go是否支持初始化匿名嵌套结构体?

支持,但必须遵循Go的复合字面量语法规则:对于匿名结构体类型的字段,初始化时需要显式写出其结构体类型字面量,编译器才能正确识别值的类型并完成初始化。

内容的提问来源于stack exchange,提问作者Rodrigo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 18:12:38