Подтвердить что ты не робот

Инициализировать массив структур внутри вложенной структуры в golang

Мне интересно, как я могу определить и инициализировать и массивы структур внутри вложенной структуры, например:

type State struct {
    id string `json:"id" bson:"id"`
    Cities 
}

type City struct {
    id string `json:"id" bson:"id"`
}

type Cities struct {
    cities []City
}

Теперь, как я могу инициализировать такую ​​структуру, и если у кого-то есть другое представление о том, как создать саму структуру.

Спасибо

4b9b3361

Ответ 1

В вашем случае синтаксис сокращенного литерала:

state := State {
    id: "CA",
    Cities:  Cities{
        []City {
            {"SF"},
        },
    },
}

Или короче, если вам не нужен синтаксис key: value для литералов:

state := State {
    "CA", Cities{
        []City {
            {"SF"},
        },
    },
}    

Кстати, если города не содержат ничего, кроме города [], просто используйте кусочек Города. Это приведет к несколько более короткому синтаксису и удалит ненужный (возможно) слой:

type State struct {
    id string `json:"id" bson:"id"`
    Cities []City
}

type City struct {
    id string `json:"id" bson:"id"`
}


func main(){
    state := State {
        id: "CA",
        Cities:  []City{
             {"SF"},
        },
    }

    fmt.Println(state)
}

Ответ 2

Полный пример со всем выписанным явно:

state := State{
    id: "Independent Republic of Stackoverflow",
    Cities: Cities{
        cities: []City{
            City{
                id: "Postington O.P.",
            },
        },
    },
}