повторное использование структур в другой структуре в Голанге - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть две структуры в golang, как показано ниже

type Data struct {
    Name          string
    Description   string
    HasMore   bool
}

type DataWithItems struct {
    Name          string
    Description   string
    HasMore      bool
    Items    []Items
}

Максимум DataWithItems Структура может быть переписана как

 type DataWithItems struct {
        Info Data
        Items []Items
    }

Но приведенные выше затрудняют декодирование объекта jsonв DataWithItems.Я знаю, что это можно решить с помощью наследования в других языках программирования, но Is there a way I can solve this in Go?

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Вы можете «встроить» одну структуру в другую:

type Items string

type 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"]}
0 голосов
/ 29 ноября 2018

Просто используйте одну структуру - DataWithItems и иногда оставляйте элементы пустыми

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...