猿问

Go:数组和映射必须是不同的概念/特性吗?

PHP 中的数组可以使用数字键和字符串键。这太棒了。

前任:

$array[0] = "My value.";

要么

$array['key'] = "My value";

为什么不去实现这样的数组?

在 Go 中有两个不同的概念和语法(映射)有什么好处?

我相信我没有看到这背后的用处。


MMTTMM
浏览 222回答 2
2回答

阿晨1998

Go 不是 PHP。虽然一些高级语言共享这种抽象,但并不常见。数组和映射是用于不同目的的不同数据结构。PHP 的数组实际上是下面的哈希表。Go 有真正的数组,它有切片,这是对数组更强大的抽象。拥有真正的数组,为您提供可预测的内存布局和真正的 O(1) 索引(Go 的切片也是如此,它在内部使用数组)。对底层数据存储使用哈希映射会导致所有操作的持续开销,以及无法更好地控制数据局部性。

慕少森

其中一个主要的原因是,阵列有秩序,地图不,这具有重要的影响,因为规定在这里:使用范围循环遍历地图时,未指定迭代顺序,并且不能保证从一次迭代到下一次迭代顺序相同。如果您需要稳定的迭代顺序,则必须维护一个单独的数据结构来指定该顺序。
随时随地看视频慕课网APP

相关分类

Go
我要回答