Map 如何查看容量大小

来源:1-9 神奇的内置数据结构

EwdAger

2021-06-09 22:00:05

上课提到了 Map 无法缩容,并给出了这个例子让我们测试:

package main

var m = make(map[int]int)

func main() {
    for i := 0; i < 10000000; i++ {
        m[i] = i
    }
	
	for i := 0; i < 990000; i++ {
	    delete(m, i)
	}
}

那么如何查看 Map 的 buckets 的长度,或者拿到 Map 的容量呢?试了下反射好像也拿不到,直接 unsafe.Sizeof() 好像也只拿到了指针的大小…

( Python 程序员老想着 Debug 的时候直接访问这个对象的私有变量… 可能这里不是直接在 debug 的时候去看?而是去写一个 benchmark 之类的?)

写回答

1回答

Xargin

2021-06-09

可以在 delete 后面加一个 map 访问,断点设置过去,然后再 p map.B

但是后面还有 overflow 呢

0
hwdAger
回复
hargin
hp>啊。老师我悟了!用 si 进到 mapassign 里就可以了

h021-06-09
共4条回复

Go高级工程师实战营

慕课网与 GoCN 社区官方联手打造,定义行业Go高级人才培养标准,4个月,快速晋升为P6+/D7级高级人才。

458 学习 · 266 问题

查看课程