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

Golang是否支持嵌套匿名结构体?JSON RPC实践遇错咨询

Go中嵌套匿名结构体的初始化问题

你尝试用嵌套匿名结构体替代顶层定义的jsonRpcRequest和params类型是完全可行的,编译错误是因为初始化内部匿名结构体时没有明确指定类型。

原代码的问题点

在初始化Params字段时,你直接写了{ ... },但Go编译器无法推断这个复合字面量的具体类型(即使外层已经定义了匿名结构体类型),所以会报错missing type in composite literal。

修正方案1:初始化时显式指定内部结构体类型

在Params的赋值处,重复写出内部匿名结构体的定义(和外层声明的结构一致):

package main

func main() {
    data := struct {
        JsonRpc string `json:"jsonrpc"`
        Method  string `json:"method"`
        Id      string `json:"id"`
        Params  struct {
            Format  string   `json:"format"`
            Cmds    []string `json:"cmds"`
            Version int      `json:"version"`
        } `json:"params"`
    }{
        JsonRpc: "2.0",
        Method:  "someMethod",
        Id:      "someId",
        Params: struct {
            Format  string   `json:"format"`
            Cmds    []string `json:"cmds"`
            Version int      `json:"version"`
        }{
            Format:  "json",
            Cmds:    []string{"some", "list", "of", "commands"},
            Version: 1,
        },
    }
}

修正方案2:先定义内部匿名结构体变量

如果觉得重复写类型麻烦,可以先把内部结构体的实例单独定义,再赋值给Params字段:

package main

func main() {
    params := struct {
        Format  string   `json:"format"`
        Cmds    []string `json:"cmds"`
        Version int      `json:"version"`
    }{
        Format:  "json",
        Cmds:    []string{"some", "list", "of", "commands"},
        Version: 1,
    }

    data := struct {
        JsonRpc string `json:"jsonrpc"`
        Method  string `json:"method"`
        Id      string `json:"id"`
        Params  struct {
            Format  string   `json:"format"`
            Cmds    []string `json:"cmds"`
            Version int      `json:"version"`
        } `json:"params"`
    }{
        JsonRpc: "2.0",
        Method:  "someMethod",
        Id:      "someId",
        Params:  params,
    }
}

补充说明

这两种写法都能满足你的需求——无需定义顶层类型,直接使用嵌套匿名结构体完成JSON RPC请求的结构构建,编译后可以正常序列化为符合要求的JSON格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:20:52