2017-06-06 2 views
1

Ich versuche, eine Struktur zu erstellen, deren Felder eine Karte ist. Ich kann es jedoch nicht mit einer Methode initialisieren und dann einen Wert mit einer anderen Methode einfügen. Es FehlerIn eine Karte als ein Feld der Karte in Golang einfügen

Panik berichtet: Zuordnung zum Eintrag in nil Karte

Ich stamme aus einer Python Hintergrund, ich bin verwirrt, was ich verpasst. Hier

ist das Ziel Spielplatz snippet

package main 

type profile map[string]float64 

type foobar struct { 
    foo profile 
    bar map[string]profile 
} 

func (fb foobar) Init() { 
    fb.foo = make(profile) 
    fb.bar = make(map[string]profile) 
} 

func (fb foobar) Set() { 
    fb.bar["foo1"] = make(profile) 
} 

func main() { 
    test := foobar{} 
    test.Init() 
    test.Set() 
} 

Antwort

4

Die Init Methode Empfänger (fb foobar) ein Wert ist. Es sollte ein Zeiger (fb *foobar) sein. Zum Beispiel

package main 

type profile map[string]float64 

type foobar struct { 
    foo profile 
    bar map[string]profile 
} 

func (fb *foobar) Init() { 
    fb.foo = make(profile) 
    fb.bar = make(map[string]profile) 
} 

func (fb foobar) Set() { 
    fb.bar["foo1"] = make(profile) 
} 

func main() { 
    test := foobar{} 
    test.Init() 
    test.Set() 
} 

Referenz:

Should I define methods on values or pointers?

+0

Vielen Dank für die Lösung und für mich nach rechts Literatur zeigen! – Junchen

Verwandte Themen