golang 地图不添加元素
golang map not adding element
我的代码中有 battleFoundmap,我尝试添加这样的元素:(battle 不是 nil)
battleFoundMap[battle.ID] = battle.Answers
但是当我调试它时 returns 1:27: 预期为 '==',发现 '=' 错误并且没有放入它。如何解决?
这是地图和卡片结构
var battleFoundMap map[uint][]models.Card
type Card struct {
gorm.Model
UserId uint `json:"userid"`
Name string `json:"name"`
Meaning string `json:"meaning"`
}
您应该在使用地图之前使用 make 对其进行初始化。
改变
var battleFoundMap map[uint][]models.Card
至
battleFoundMap := make(map[uint][]models.Card)
这应该够了。
添加到@ShivaKishore 的回答,
当您声明地图时,var name map[KeyType]ValueType
。此映射的值为 nil
,长度为 0
。
nil
地图没有键值,也无法添加。它的行为类似于读取操作的空映射,但如果您想向其写入数据,则会导致运行时恐慌。
var m map[string]string
// reading
m["foo"] == "" // works.
// writing
m["foo"] = "bar" // will panic.
但是,使用 make
初始化映射会创建一个同时适用于读取和写入操作的空映射。
// as you can't declare a map globally using shorthands
var m map[string]string
m = make(map[string]string)
或者,使用简写
m := make(map[string]string)
我的代码中有 battleFoundmap,我尝试添加这样的元素:(battle 不是 nil)
battleFoundMap[battle.ID] = battle.Answers
但是当我调试它时 returns 1:27: 预期为 '==',发现 '=' 错误并且没有放入它。如何解决?
这是地图和卡片结构
var battleFoundMap map[uint][]models.Card
type Card struct {
gorm.Model
UserId uint `json:"userid"`
Name string `json:"name"`
Meaning string `json:"meaning"`
}
您应该在使用地图之前使用 make 对其进行初始化。
改变
var battleFoundMap map[uint][]models.Card
至
battleFoundMap := make(map[uint][]models.Card)
这应该够了。
添加到@ShivaKishore 的回答,
当您声明地图时,var name map[KeyType]ValueType
。此映射的值为 nil
,长度为 0
。
nil
地图没有键值,也无法添加。它的行为类似于读取操作的空映射,但如果您想向其写入数据,则会导致运行时恐慌。
var m map[string]string
// reading
m["foo"] == "" // works.
// writing
m["foo"] = "bar" // will panic.
但是,使用 make
初始化映射会创建一个同时适用于读取和写入操作的空映射。
// as you can't declare a map globally using shorthands
var m map[string]string
m = make(map[string]string)
或者,使用简写
m := make(map[string]string)