【原理】
#### go map 底层结构 ####_wangfy_的博客-CSDN博客
【map的线程不安全的原因】
在同一时间点,两个 goroutine 对同一个map进行读写操作是不安全的。举个栗子。
此时goroutine1来插入key1,goroutine2来读取key2,可能会发生如下过程:
① goroutine2 计算key2的hash值,B=2,并确定桶号为1。
② goroutine1添加key1,触发扩容条件。
③ B=B+1=3, buckets数据迁移到oldbuckets。
④ goroutine2从桶1中遍历,获取数据失败。