web-dev-qa-db-ja.com

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
}

さて、そのような構造をどのように初期化することができますか?誰かが構造自体の作成方法について別の考えを持っている場合。

ありがとう

24
mquemazz

あなたの場合、略式のリテラル構文は次のようになります。

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

または、リテラルのkey:value構文が必要ない場合は短くします。

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

ところで、Citiesに[] City以外のものが含まれていない場合は、Cityのスライスを使用してください。これにより、構文が多少短くなり、不要な(おそらく)レイヤーが削除されます。

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

すべてを明示的に記述した完全な例:

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