32

Goでグローバルマップ変数を作成することに関して少し助けが必要です。私がしたことは次のとおりです。

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

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

4

4 に答える 4

45

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

var ir_MAP = map[int]ir_table{}

または、「システム」が示唆するように:

var ir_MAP = make(map[int]ir_table)

問題は、マップのゼロ値が nil であり、アイテムを nil マップに追加できないことです。

于 2013-03-02T19:12:20.063 に答える
9

あなたはほとんどそれを正しく持っています。まだマップを初期化していません。

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])
}
于 2013-03-02T19:38:26.427 に答える