2013-03-02 9 views
13

Potrzebuję pomocy w tworzeniu globalnej zmiennej mapy w Go. Co mam zrobić to w następujący sposób:Utwórz zmienne globalne mapy

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

Ponieważ nie jestem inicjowanie mapę, ja dostaję błąd zerowy wskaźnik wyłuskiwania. Co muszę zrobić, aby globalnie używać tej zmiennej? Lub, jeśli nie jest to właściwy sposób, aby to zrobić, proszę mnie poprowadzić.

+5

Zainicjować? 'var ir_MAP = make (map [int] ir_table)' –

Odpowiedz

23

Trzeba zainicjować go z pustym mapie:

var ir_MAP = map[int]ir_table{} 

lub jako "system" zasugerował:

var ir_MAP = make(map[int]ir_table) 

Problem polega na tym, że wartość zero mapie jest zerowa, i nie można dodawać elementów do zerowej mapy.

+0

Dzięki, Andy, skorzystałem z sugestii "systemu". To działa. – progfan

7

Prawie masz rację. Po prostu nie zainicjalizowałeś jeszcze swojej mapy.

Oto działający kod w 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]) 
}