go的结构体嵌套

魏什么
  • 1.5k

image.png
如上图,我想封装一个基础结构体,用作web api的响应数据,status和message及代表接口的基础响应状况,其中data则是各自接口的响应数据,各个接口的响应内容肯定不尽相同,
那么我这个data怎么定义才能让不同接口的响应情况输入到该基础结构体的data中呢?
理想的结果是这样的:

{
    "Status": 1,
    "Data": {
        "Id": 100,
        "Name": "",
        "Age": 32,
        "IsDeleted": true
    },
    "Message": "OK"
}
或者
{
    "Status": 1,
    "Data": {
        "ClassName": "1班",
        "TeacherName": "李明"
    },
    "Message": "OK"
}

当然,以上展示响应是转过json的

回复
阅读 2.2k
1 个回答

data 类型换成 interface{} 就好了,比如下面这样:

type Base struct {
    Status int64
    Data interface{}
    Message string
}

这里的 interface{} 即可以理解为任意类型。

当然,如果是返回给客户端的话,非 struct 类型数据,也可以通过组织 map 的方式实现,此时的 Data 的类型即 map[string]interface{}

宣传栏