一尘不染

前往:数组和映射是否必须具有不同的概念/功能?

go

PHP中的数组可与数字键和字符串键一起使用。太棒了

例如:

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

要么

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

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

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

我相信我看不到背后的用处。


阅读 288

收藏
2020-07-02

共1个答案

一尘不染

Go不是PHP。虽然一些高级语言共享这种抽象,但这并不是很常见。数组和映射是出于不同目的的不同数据结构。

PHP的数组实际上是下面的哈希表。Go具有真实的数组,并且具有切片,这些切片是对数组的更强大的抽象。

拥有真实的数组,可以为您提供可预测的内存布局,以及真正的O(1)索引(Go的slice也是一样,它们在内部使用数组)。对基础数据存储使用哈希映射会花费所有操作的固定开销,并且无法更好地控制数据局部性。

2020-07-02