2013-03-02 87 views
13

我需要一些關於在Go中創建全局地圖變量的幫助。我所做的如下:創建全局地圖變量

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

由於我沒有初始化映射,我得到一個零指針解引用錯誤。我必須做些什麼來全局使用這個變量?或者,如果這不是一個正確的方法,請指導我。

+5

初始化呢? 'var ir_MAP = make(map [int] ir_table)' – 2013-03-02 18:56:17

回答

23

你需要用空地圖初始化:

var ir_MAP = map[int]ir_table{} 

,或者爲「系統」提示:

var ir_MAP = make(map[int]ir_table) 

的問題是,一個地圖的零值是零,並且您無法將項目添加到零映射。

+0

謝謝,安迪,我使用了「系統」的建議。有用。 – progfan 2013-03-02 19:39:32

7

你幾乎沒錯。你還沒有初始化你的地圖。

下面是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]) 
}