2013-03-02 23 views
13

Git küresel harita değişkeni hakkında daha fazla yardıma ihtiyacım var. Ben haritayı başlatılıyor değilim beriKüresel harita değişikleri oluşturun

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

, ben nil işaretçi çözümlemesi hatası alıyorum şu şekildedir: Ben ne yaptım olduğunu. Bu değişkeni global olarak kullanmak için ne yapmalıyım? Ya da eğer bunu yapmak için doğru bir yol değilse, lütfen bana rehberlik edin.

+5

Bunu sıfırlayın? 'var ir_MAP = make (harita [int] ir_table)' –

cevap

23

Boş haritası ile başlatmak gerekir:

var ir_MAP = map[int]ir_table{} 

ya, "Sistem" önerildiği gibi:

var ir_MAP = make(map[int]ir_table) 

problem haritanın sıfır değeri sıfır olmasıdır, ve nil bir haritaya öğe ekleyemezsiniz.

+0

Teşekkürler, Andy, "sistemin" önerisini kullandım. İşe yarıyor. – progfan

7

Neredeyse doğru var. Henüz haritanızı henüz başlatmadınız.

İşte çalışma kodu 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]) 
}