[转载] 由浅入深聊聊Golang的map

https://blog.csdn.net/u011957758/article/details/82846609

几个我忽略的点

基础

  1. map中value的默认值
  2. key与value的限制
  3. value的三种查询方式
  4. map的有序遍历
  5. map函数传参【面试过】: map变量地址不变,map内容会被修改。
    扩展:slice函数传参会不会被修改

深入

1.map的基础数据结构:TODO
2.map的gc回收机制:delete是不会真正的把map释放的,所以要回收map还是需要设为nil

map和GC

http://bos.itdks.com/629f2323dbcd4f1fb5ebfb936b4bfcc0.pdf

Q: 图中优化的原理
A:

gc要去查找那些无用对象,所以也要也遍历map中存的那些对象,如果是对象的话,还有可能有间接引用,那么要继续查找,直到查询到没有引用了,如果是值的话,我直接就找到了,而且go中对值类型的key和value做了单独的处理,用了一个单独的字段去存的。这是我的理解。

原文地址:https://www.cnblogs.com/yudidi/p/12255477.html