doujian3401 2016-06-03 18:45
浏览 27
已采纳

恐慌:分配给单个简单地图上的nil地图中的条目

I was under the impression that the assignment to entry in nil map error would only happen if we would want to assign to a double map, that is, when a map on a deeper level is trying to be assigned while the higher one doesn't exist, e.g.:

var mm map[int]map[int]int
mm[1][2] = 3

But it also happens for a simple map (though with struct as a key):

package main

import "fmt"

type COO struct {
    x int
    y int
}

var neighbours map[COO][]COO

func main() {
    for i := 0; i < 30; i++ {
        for j := 0; j < 20; j++ {
            var buds []COO
            if i < 29 {
                buds = append(buds, COO{x: i + 1, y: j})
            }
            if i > 0 {
                buds = append(buds, COO{x: i - 1, y: j})
            }
            if j < 19 {
                buds = append(buds, COO{x: i, y: j + 1})
            }
            if j > 0 {
                buds = append(buds, COO{x: i, y: j - 1})
            }
            neighbours[COO{x: i, y: j}] = buds // <--- yields error
        }
    }


    fmt.Println(neighbours)

}

What could be wrong?

  • 写回答

2条回答 默认 最新

  • douyuqing_12345 2016-06-03 18:55
    关注

    You need to initialize neighbours: var neighbours = make(map[COO][]COO)

    See the second section in: https://blog.golang.org/go-maps-in-action

    You'll get a panic whenever you try to insert a value into a map that hasn't been initialized.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 请问如何在openpcdet上对KITTI数据集的测试集进行结果评估?
  • ¥15 powerbuilder中的datawindow数据整合到新的DataWindow
  • ¥20 有人知道这种图怎么画吗?
  • ¥15 pyqt6如何引用qrc文件加载里面的的资源
  • ¥15 安卓JNI项目使用lua上的问题
  • ¥20 RL+GNN解决人员排班问题时梯度消失
  • ¥60 要数控稳压电源测试数据
  • ¥15 能帮我写下这个编程吗
  • ¥15 ikuai客户端l2tp协议链接报终止15信号和无法将p.p.p6转换为我的l2tp线路
  • ¥15 phython读取excel表格报错 ^7个 SyntaxError: invalid syntax 语句报错