在golang中的嵌套结构中初始化一个结构数组

时间:2015-02-12 13:04:56

标签: arrays json go

我想知道如何在嵌套结构中定义和初始化结构和数组,例如:

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

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

type Cities struct {
    cities []City
}

现在我如何初始化这样的结构,如果有人对如何创建结构本身有不同的想法。

谢谢

2 个答案:

答案 0 :(得分:29)

在您的情况下,简写文字语法为:

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

如果您不想要文字的键:值语法,则更短:

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

答案 1 :(得分:6)

明确写出所有内容的完整示例:

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