web-dev-qa-db-fra.com

Initialiser un tableau de structures à l'intérieur d'une structure imbriquée dans Golang

Je me demande comment puis-je définir et initialiser un tableau de structures à l'intérieur d'une structure imbriquée, par exemple:

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

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

type Cities struct {
    cities []City
}

Maintenant, comment puis-je initialiser une telle structure et si quelqu'un a une idée différente de la façon de créer la structure elle-même.

Merci

24
mquemazz

Dans votre cas, la syntaxe littérale abrégée serait:

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

Ou plus court si vous ne voulez pas la syntaxe clé: valeur pour les littéraux:

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

BTW si Cities ne contient rien d'autre que la [] City, utilisez simplement une tranche de City. Cela conduira à une syntaxe un peu plus courte et supprimera une couche inutile (éventuellement):

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)
}
29
Not_a_Golfer

Exemple complet avec tout écrit explicitement:

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