2013-03-02 89 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]) 
}