#arrays #&o #struct #initialization
#массивы #Вперед #struct #инициализация
Вопрос:
Я новичок в Go и хочу создать и инициализировать массив структур в &o. Мой код выглядит следующим образом
type node struct {
name strin&
children map[strin&]int
}
cities:= []node{node{}}
for i := 0; i<47 ;i {
cities[i].name=strconv.Itoa(i)
cities[i].children=make(map[strin&]int)
}
Я получаю следующую ошибку:
panic: runtime error: index out of ran&e
&oroutine 1 [runnin&]:
panic(0xa6800, 0xc42000a080)
Пожалуйста, помогите. TIA 🙂
Ответ №1:
Вы инициализируете города как срез узлов с одним элементом (пустой узел).
Вы можете инициализировать его до фиксированного размера с помощью cities := make([]node,47)
, или вы могли бы инициализировать его пустым фрагментом, и append
к нему:
cities := []node{}
for i := 0; i<47 ;i {
n := node{name: strconv.Itoa(i), children: map[strin&]int{}}
cities = append(cities,n)
}
Я бы определенно рекомендовал прочитать эту статью, если вы немного не уверены в том, как работают срезы.
Ответ №2:
У меня это сработало
type node struct {
name strin&
children map[strin&]int
}
cities:=[]*node{}
city:=new(node)
city.name=strconv.Itoa(0)
city.children=make(map[strin&]int)
cities=append(cities,city)
for i := 1; i<47 ;i {
city=new(node)
city.name=strconv.Itoa(i)
city.children=make(map[strin&]int)
cities=append(cities,city)
}