2013-03-02 15 views
13

Ich brauche ein wenig Hilfe beim Erstellen einer globalen Kartenvariablen in Go. Was ich getan haben, ist wie folgt:Erstellen von globalen Kartenvariablen

package ... 
import(
... 
) 
... 
type ir_table struct{ 
    symbol  string 
    value  string 
} 
var ir_MAP map[int]ir_table 

Da ich nicht die Karte bin initialisiert, ich bin eine Null-Pointer Dereference Fehler. Was muss ich tun, um diese Variable global zu verwenden? Oder, wenn dies nicht der richtige Weg ist, leite mich bitte.

+5

Initialisieren Sie es? 'var ir_MAP = make (map [int] ir_table)' –

Antwort

23

Sie müssen es mit einer leeren Karte initialisieren:

var ir_MAP = map[int]ir_table{} 

oder als „das System“ vorgeschlagen:

var ir_MAP = make(map[int]ir_table) 

Das Problem ist, dass der Null-Wert einer Karte gleich Null ist, und Sie können keine Objekte zu einer Null-Map hinzufügen.

+0

Danke, Andy, ich habe den Vorschlag des "Systems" benutzt. Es klappt. – progfan

7

Sie haben es fast richtig. Sie haben Ihre Karte noch nicht initialisiert.

Hier ist Arbeitscode in The Playground.

package main 

import "fmt" 

type ir_table struct{ 
    symbol  string 
    value  string 
} 
// define global map; initialize as empty with the trailing {} 
var ir_MAP = map[int]ir_table{} 

func main() { 
    ir_MAP[1] = ir_table{symbol:"x", value:"y"} 
    TestGlobal() 
} 

func TestGlobal() { 
    fmt.Printf("1 -> %v\n", ir_MAP[1]) 
} 
Verwandte Themen