Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
golang地图的底层结构有多大?_Go_Hashmap - Fatal编程技术网

golang地图的底层结构有多大?

golang地图的底层结构有多大?,go,hashmap,Go,Hashmap,我知道map是Go中的一个引用类型(它在底层结构中有一个指向map条目内存区域的指针)。但是,我想知道映射的底层结构的大小,因为我想知道使用映射指针作为函数参数是否比不使用指针更快 从这个角度看,maptype结构似乎有很多字段,复制(相对于指针)需要很长时间 通过查阅golang标准库,我发现几乎没有使用*map[x]x,所以我想使用map[x]x作为函数参数应该是有效的。这让我想到,也许编译器实际上用指向maptype结构的指针替换了map[x]x。是这样吗?如果不是,实际发生的情况可能会避

我知道map是Go中的一个引用类型(它在底层结构中有一个指向map条目内存区域的指针)。但是,我想知道映射的底层结构的大小,因为我想知道使用映射指针作为函数参数是否比不使用指针更快

从这个角度看,maptype结构似乎有很多字段,复制(相对于指针)需要很长时间


通过查阅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
值作为函数或方法参数传递很快,即传递指针

Go
map
运行时
结构
s当前位于
src/runtime/map.Go
Go源文件中。由于您只看到
hmap
指针,因此它们的大小不太可能相关


请参阅。

谢谢@peterso。任何指向一个资源的链接,如果它说一个映射变成了一个hmap指针,而不仅仅是hmap?我看了看地图,但找不到任何关于那件事的说明。