-1

我的代码中有battleFoundmap,我尝试添加这样的元素:(battle不是nil)

battleFoundMap[battle.ID] = battle.Answers

但是当我调试它时它返回 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"`
}
4

2 回答 2

2

添加到@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)
于 2020-07-24T13:20:43.740 回答
1

在使用地图之前,您应该使用 make 对其进行初始化。

改变

var battleFoundMap map[uint][]models.Card

battleFoundMap := make(map[uint][]models.Card)

这应该足够了。

于 2020-07-24T13:00:19.857 回答