猿问

在 golang 的另一个结构中重用结构

我在 golang 中有两个结构如下


type Data struct {

    Name          string

    Description   string

    HasMore   bool

}


type DataWithItems struct {

    Name          string

    Description   string

    HasMore      bool

    Items    []Items

}

至多DataWithItemsstruct 可以重写为


 type DataWithItems struct {

        Info Data

        Items []Items

    }

但是上面的内容使得将 json 对象解码为DataWithItems. 我知道这可以通过其他编程语言的继承来解决,但是Is there a way I can solve this in Go?


眼眸繁星
浏览 90回答 2
2回答

桃花长相依

您可以将一个结构“嵌入”到另一个结构中:type Items stringtype Data struct {    Name        string    Description string    HasMore     bool}type DataWithItems struct {    Data // Notice that this is just the type name    Items []Items}func main() {    d := DataWithItems{}    d.Data.Name = "some-name"    d.Data.Description = "some-description"    d.Data.HasMore = true    d.Items = []Items{"some-item-1", "some-item-2"}    result, err := json.Marshal(d)    if err != nil {        panic(err)    }    println(string(result))}这打印{"Name":"some-name","Description":"some-description","HasMore":true,"Items":["some-item-1","some-item-2"]}

Qyouu

只需使用一个结构 - DataWithItems,有时将项目留空
随时随地看视频慕课网APP

相关分类

Go
我要回答