为了账号安全,请及时绑定邮箱和手机立即绑定

变异映射中不存在的键与数组中的相似键

变异映射中不存在的键与数组中的相似键

Go
一只萌萌小番薯 2021-11-08 15:43:23
我是 golang 的新手,关于改变地图的 Go 之旅的这一部分正在扼杀我的粉红色小马世界。下面是问题的一个例子:package mainimport "fmt"func main() {    a := make([]int, 10)    fmt.Println(a[123]) //panic: runtime error: index out of range, good    b := make(map[int]int, 10)    fmt.Println(b[123]) // 0 ? WHAAAT? Not nil, not panic?}我知道,我可以使用第二个值检查元素是否存在,如下所示:v, ok := b[11]if (!ok) {    // do something strange}但是为什么我每次都需要在需要从地图中获取某些内容的每个地方都这样做?我认为映射类似于关联数组,但这种行为真的很奇怪。如何制作带有恐慌级别的键检查的地图?
查看完整描述

2 回答

?
MM们

TA贡献1886条经验 获得超2个赞

确定地图中的零值不是由于键不存在而导致的唯一方法是“逗号,好的”习语 ( v, ok := m[k])。如果您需要对不存在的键进行紧急响应,最好的方法是编写一个辅助函数。


func mapSafe(m map[string]int, key string) (i int) {

    i, ok: = m[key]

    if (!ok) {

        panic("Key not in map")

    }

    return

}


查看完整回答
反对 回复 2021-11-08
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

如何制作带有恐慌级别的键检查的地图?

你不能。


查看完整回答
反对 回复 2021-11-08
  • 2 回答
  • 0 关注
  • 162 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信