Je suis nouveau sur Go et je veux créer et initialiser un tableau struct en cours. Mon code est comme ça
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)
}
Je reçois l'erreur suivante:
panic: runtime error: index out of range
goroutine 1 [running]:
panic(0xa6800, 0xc42000a080)
S'il vous plaît aider. TIA :)
Vous initialisez des villes en tant que tranche de nœuds avec un élément (un nœud vide).
Vous pouvez l'initialiser à une taille fixe avec cities := make([]node,47)
ou l'initialiser à une tranche vide et append
à celle-ci:
cities := []node{}
for i := 0; i<47 ;i++ {
n := node{name: strconv.Itoa(i), children: map[string]int{}}
cities = append(cities,n)
}
Je recommanderais certainement de lire cet article si vous êtes un peu fragile sur le fonctionnement des tranches.
Cela a fonctionné pour moi
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)
}