Skip to main content

映射

什么是映射

在Go中,映射是一种特殊的结构体,它底层基于哈希表实现,因此可以支持近乎O(1)的速度进行读写数据,是很常用的一种数结构。

请介绍实现原理

使用过程中注意那些问题

  • 初始化时,不应该使用var,而应该使用make或者简短申明,否则会panic
  • 使用过程中,如果值不存在,会返回零值,应该需要使用第二个返回参数判断值是否存在
  • map是不支持竞态操作的,在并发场景下需要加锁,否则将引起程序奔溃,不可被recover

映射是如何扩容的

基于扩容因子,申请一个新的数组,将此数组数据重新映射到新数组中

映射如何知道自己处于竞争状态