【问题标题】:golang map not adding elementgolang地图不添加元素
【发布时间】:2020-07-24 12:53:57
【问题描述】:

我的代码中有battleFoundmap,我尝试添加这样的元素:(battle is not 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"`
}

【问题讨论】:

    标签: go go-map


    【解决方案1】:

    添加到@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)
    

    【讨论】:

      【解决方案2】:

      您应该在使用前使用 make 初始化地图。

      改变

      var battleFoundMap map[uint][]models.Card
      

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

      应该够了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多