golang地图的底层结构有多大?
我知道map是Go中的一个引用类型(它在底层结构中有一个指向map条目内存区域的指针)。但是,我想知道映射的底层结构的大小,因为我想知道使用映射指针作为函数参数是否比不使用指针更快 从这个角度看,maptype结构似乎有很多字段,复制(相对于指针)需要很长时间golang地图的底层结构有多大?,go,hashmap,Go,Hashmap,我知道map是Go中的一个引用类型(它在底层结构中有一个指向map条目内存区域的指针)。但是,我想知道映射的底层结构的大小,因为我想知道使用映射指针作为函数参数是否比不使用指针更快 从这个角度看,maptype结构似乎有很多字段,复制(相对于指针)需要很长时间 通过查阅golang标准库,我发现几乎没有使用*map[x]x,所以我想使用map[x]x作为函数参数应该是有效的。这让我想到,也许编译器实际上用指向maptype结构的指针替换了map[x]x。是这样吗?如果不是,实际发生的情况可能会避
通过查阅golang标准库,我发现几乎没有使用*map[x]x,所以我想使用map[x]x作为函数参数应该是有效的。这让我想到,也许编译器实际上用指向maptype结构的指针替换了map[x]x。是这样吗?如果不是,实际发生的情况可能会避免复制maptype结构及其许多字段?Go
map
变量的零值是nil
指针
var m map[string]int
make
初始化映射
并将map
变量设置为指向包运行时
hmap
结构
m = make(map[string]int)
在Go中,所有参数都按值传递。对于map
值,参考类型map
值是指针。因此,将map
值作为函数或方法参数传递很快,即传递指针
Gomap
运行时
结构
s当前位于src/runtime/map.Go
Go源文件中。由于您只看到hmap
指针,因此它们的大小不太可能相关
请参阅。谢谢@peterso。任何指向一个资源的链接,如果它说一个映射变成了一个hmap指针,而不仅仅是hmap?我看了看地图,但找不到任何关于那件事的说明。