Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.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
Go 初始化地图的更好方法是什么?_Go - Fatal编程技术网

Go 初始化地图的更好方法是什么?

Go 初始化地图的更好方法是什么?,go,Go,Asmap是一种参考类型。两者的区别是什么 m := make(map[string]int32) 及 一个允许您初始化容量,一个允许您初始化值: // Initializes a map with space for 15 items before reallocation m := make(map[string]int32, 15) vs 对于容量为0的空映射,它们是相同的,这只是首选项。甚至可能是相同的问题,@Jsor的答案更清楚地说明了为什么。请注意,第一个指定了初始分配;它仍然可

As
map
是一种参考类型。两者的区别是什么

m := make(map[string]int32)


一个允许您初始化容量,一个允许您初始化值:

// Initializes a map with space for 15 items before reallocation
m := make(map[string]int32, 15)
vs


对于容量为0的空映射,它们是相同的,这只是首选项。

甚至可能是相同的问题,@Jsor的答案更清楚地说明了为什么。请注意,第一个指定了初始分配;它仍然可以超出指定的大小,并具有与不使用大小相同的性能。好处是,添加到地图的前15个项目(在本例中)不需要任何地图大小调整。我之所以提到这一点,是因为我看到人们提到地图
make
,并说它的意思是“制作一张最多有15个项目的地图”,而实际上它应该被解释为“一张至少有15个项目空间的地图”或“一张大约有15个项目的地图”。我尝试对这两种情况进行计时,似乎地图文字在所有情况下都更快。示例代码是。有什么想法吗?@BharathRam如果这是真的,它可能是一个编译器错误,并且会随着版本的变化而变化。另外,您是否尝试过交换您在这两个案例中的顺序?可能有一些字符串优化的事情发生在幕后,因为两个基准都使用相同的字符串。当我在在线编译器中尝试时,结果似乎有所改变。但是,您的观点似乎也是正确的,它对运行时间有一定的影响。它可能在引擎盖下进行某种缓存。谢谢。基准是有缺陷的。交换循环顺序会反转结果,在大多数情况下会使
make()
更快。
// Initializes a map with space for 15 items before reallocation
m := make(map[string]int32, 15)
// Initializes a map with an entry relating the name "bob" to the number 5
m := map[string]int{"bob": 5}