我是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:)
答案 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)
}