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

29

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

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个回答

34

在您的情况下,速记文字字面量语法将是:

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

如果您不想使用字面量的键值语法,可以更短:

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

完美,我想在这个时刻我还没有足够的经验来处理Go语言中的嵌入式和嵌套结构体,毕竟多年来我一直在处理Java,这对我来说是全新的,但非常感谢:D - mquemazz

6

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接