Go:数组和地图必须是不同的概念/特征吗?

use*_*856 1 go

PHP中的数组使用数字键和字符串键.哪个很棒.

例如:

$array[0] = "My value.";
Run Code Online (Sandbox Code Playgroud)

要么

$array['key'] = "My value";
Run Code Online (Sandbox Code Playgroud)

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

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

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

Jim*_*imB 12

Go不是PHP.虽然一些高级语言共享这种抽象,但它并不常见.数组和地图是用于不同目的的不同数据结构.

PHP的数组实际上是哈希表.Go拥有真正的数组,并且它具有对数组更强大的抽象.

拥有真正的数组,为您提供可预测的内存布局和真正的O(1)索引(Go的切片也是如此,内部使用数组).使用底层数据存储的哈希映射会使所有操作的成本持续增加,并且无法更好地控制数据局部性.