2013-03-02 4 views
13

Goにグローバルマップ変数を作成するには少し助けが必要です。次のように私が行っていることである。グローバルマップ変数を作成する

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

私はマップを初期化しませんので、私がnilポインタ参照のエラーを取得しています。この変数をグローバルに使用するにはどうすればよいですか?または、これが正しい方法でない場合は、私を案内してください。

+5

初期化しますか? 'var ir_MAP = make(map [int] ir_table)' –

答えて

23

あなたは空のマップで初期化する必要があります。

var ir_MAP = map[int]ir_table{} 

または、「システム」と示唆したように:

var ir_MAP = make(map[int]ir_table) 

問題はマップのゼロ値がnilであるということです、あなたは無制限の地図にアイテムを追加することはできません。

+0

ありがとう、アンディ、私は "システム"の提案を使用しました。できます。 – progfan

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]) 
} 
関連する問題