我制作了一个config.go,它有助于编辑配置文件,但我有一个地图为nil的错误,这是错误来自的地方:
type(
Content map[string]interface{}
Config struct {
file string
config Content
configType int
}
)
func (c *Config) Set(key string, value interface{}) {
c.config[key] = value
}
答案 0 :(得分:4)
The Go Programming Language Specification
地图是一种无序的一组元素,称为 元素类型,由一组另一种类型的唯一键索引,称为 关键类型。未初始化地图的值为零。
使用内置函数make创建一个新的空映射值 将地图类型和可选容量提示作为参数:
make(map[string]int) make(map[string]int, 100)
初始容量不限制其大小:地图增长以容纳 存储在其中的项目数,但nil地图除外。一个 nil map相当于一个空映射,除了没有元素 加入。
未初始化地图的值为nil
。在第一次写入之前初始化地图。
例如,
package main
import (
"fmt"
)
type (
Content map[string]interface{}
Config struct {
file string
config Content
configType int
}
)
func (c *Config) Set(key string, value interface{}) {
if c.config == nil {
c.config = make(Content)
}
c.config[key] = value
}
func main() {
var c Config
c.Set("keya", "valuea")
fmt.Println(c)
c.Set("keyb", "valueb")
fmt.Println(c)
}
游乐场:https://play.golang.org/p/6AnvIZZRml_y
输出:
{ map[keya:valuea] 0}
{ map[keya:valuea keyb:valueb] 0}