Map 创建全局映射变量
我需要一些关于在Go中创建全局映射变量的帮助。我所做的工作如下:Map 创建全局映射变量,map,global-variables,go,Map,Global Variables,Go,我需要一些关于在Go中创建全局映射变量的帮助。我所做的工作如下: package ... import( ... ) ... type ir_table struct{ symbol string value string } var ir_MAP map[int]ir_table 因为我没有初始化映射,所以我得到了一个零指针解引用错误。要全局使用此变量,我必须做什么?或者,如果这不是正确的方法,请指导我。您需要使用空映射对其进行初始化: var ir_M
package ...
import(
...
)
...
type ir_table struct{
symbol string
value string
}
var ir_MAP map[int]ir_table
因为我没有初始化映射,所以我得到了一个零指针解引用错误。要全局使用此变量,我必须做什么?或者,如果这不是正确的方法,请指导我。您需要使用空映射对其进行初始化:
var ir_MAP = map[int]ir_table{}
或者,正如“系统”所建议的那样:
var ir_MAP = make(map[int]ir_table)
问题是地图的零值为零,并且您不能向零地图添加项目。您几乎完全正确。你只是还没有初始化你的地图 下面是中的工作代码
老话题,但最优雅的解决方案尚未提及。 这在无法在主函数中赋值的模块中非常有用。init只执行一次,因此每次需要初始化映射时,它都会节省一些CPU周期
可以像这样直接初始化贴图:
var Romans = map[byte]int{
'I': 1,
'V': 5,
'X': 10,
'L': 50,
'C': 100,
'D': 500,
'M': 1000,
}
初始化它
var-ir\u-MAP=make(MAP[int]ir\u表)
为什么这ir\u-MAP:=make(MAP[int]ir\u表{})
?由于全局变量给出错误:函数体外部的非声明语句
@overexchange,使用:=
声明变量仅在函数内部有效。在函数外部,您需要使用var
。是的,但是这个想法是什么?对于全局与非全局的:=
用法的语法更改,所有顶级声明都以指示声明类型的关键字开头。(func
,var
,const
)
package main
import (
"fmt"
)
var (
globalMap = make(map[string]string)
)
func init() {
globalMap["foo"] = "bar"
globalMap["good"] = "stuff"
}
func main() {
fmt.Printf("globalMap:%#+v", globalMap)
}
var Romans = map[byte]int{
'I': 1,
'V': 5,
'X': 10,
'L': 50,
'C': 100,
'D': 500,
'M': 1000,
}