2016-10-25 24 views
3

私は新しいです。goで構造体配列を作成して初期化します。私のコードは、私は次のエラーを取得するこのGo言語の構造体の配列

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

多分あなたはツアーオブザゴーをもう一度やることができますか? – Volker

答えて

6

のために働きました。

あなたはcities := make([]node,47)で固定サイズにそれを初期化したり、空のスライスにそれを初期化することができ、そしてそれにappend

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

あなたが少し不安定であれば、私は間違いなくthis articleを読んでお勧めしますスライスの仕組みについて

+0

はい。ありがとう! – Parag

0

これは、あなたが一つの要素(空のノード)を持つノードのスライスとして都市を初期化している私

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) 
} 
関連する問題