PHP中的数组使用数字键和字符串键。哪个太棒了。
例如:
$array[0] = "My value.";
或
$array['key'] = "My value";
为什么不实现像这样的数组呢?
在Go中有两个不同的概念和语法(地图)有什么好处?
我相信我没有看到这背后的用处。
答案 0 :(得分:11)
Go不是PHP。虽然一些高级语言共享这种抽象,但它并不常见。数组和地图是用于不同目的的不同数据结构。
PHP的数组实际上是哈希表。 Go拥有真正的数组,并且它具有对数组更强大的抽象。
拥有真正的数组,为您提供可预测的内存布局和真正的O(1)索引(对于Go内部的切片,内部使用数组也是如此)。使用底层数据存储的哈希映射会使所有操作的开销成本不断增加,并且无法更好地控制数据局部性。
答案 1 :(得分:3)
其中一个主要原因是数组有顺序而地图没有,这具有如here所述的重要含义:
当使用范围循环迭代地图时,未指定迭代顺序,并且不保证从一次迭代到下一次迭代相同。如果需要稳定的迭代顺序,则必须维护一个指定该顺序的单独数据结构。