Массив структур на языке Go

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