Go语言中的结构数组

时间:2016-10-25 01:12:51

标签: arrays go struct initialization

我是Go的新手,想要在go中创建和初始化一个struct数组。我的代码就像这样

type node struct {
name string
children map[string]int
}

cities:= []node{node{}}
for i := 0; i<47 ;i++ {
    cities[i].name=strconv.Itoa(i)
    cities[i].children=make(map[string]int)
}

我收到以下错误:

panic: runtime error: index out of range

goroutine 1 [running]:
panic(0xa6800, 0xc42000a080)

请帮忙。 TIA:)

2 个答案:

答案 0 :(得分:20)

您正在将城市初始化为具有一个元素(空节点)的节点片段。

您可以使用UICollectionView将其初始化为固定大小,也可以将其初始化为空切片,然后cities := make([]node,47)将其初始化为:

append

如果你对切片的工作方式有点不稳定,我肯定建议你阅读this article

答案 1 :(得分:1)

这对我有用

type node struct {
    name string
    children map[string]int
}

cities:=[]*node{}
city:=new(node)
city.name=strconv.Itoa(0)
city.children=make(map[string]int)
cities=append(cities,city)
for i := 1; i<47 ;i++ {
    city=new(node)
    city.name=strconv.Itoa(i)
    city.children=make(map[string]int)
    cities=append(cities,city)
}