map 怎么确定 key 是否存在,如果访问了不存在的 key 会出现什么问题?

murphyzhao · · 5506 次点击
想要知道: - 空 map 的大小是怎么样的 - 空 map(或者 map)在内存中的布局是怎么样的 - 为什么对不存在的 key 的访问不会报错,为什么这么设计 这些可能需要深入查看 map 的源码了 :joy:
#2
更多评论
``` if value, ok := m[key]; ok { fmt.Println("key存在") } else { fmt.Println("key不存在, value为空值:", value) } ``` 在Go中操作map, 无论key是否存在都不会panic或者返回error PS. 不知道你是想要什么**原理**
#1
在官网中找到了**索引表达式**的描述: https://golang.org/ref/spec#Index_expressions 文档里说明了map[key] 通过返回第二参数来标识是否存在 key 。 其他更详细的 map 实现,需要研究 map 的实现源码了。
#3