为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
MMTTMM 2021-08-10 15:11:57
PHP 中的数组可以使用数字键和字符串键。这太棒了。前任:$array[0] = "My value.";要么$array['key'] = "My value";为什么不去实现这样的数组?在 Go 中有两个不同的概念和语法(映射)有什么好处?我相信我没有看到这背后的用处。
查看完整描述

2 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

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

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

拥有真正的数组,为您提供可预测的内存布局和真正的 O(1) 索引(Go 的切片也是如此,它在内部使用数组)。对底层数据存储使用哈希映射会导致所有操作的持续开销,以及无法更好地控制数据局部性。


查看完整回答
反对 回复 2021-08-10
?
慕少森

TA贡献2019条经验 获得超9个赞

其中一个主要的原因是,阵列有秩序,地图不,这具有重要的影响,因为规定在这里

使用范围循环遍历地图时,未指定迭代顺序,并且不能保证从一次迭代到下一次迭代顺序相同。如果您需要稳定的迭代顺序,则必须维护一个单独的数据结构来指定该顺序。


查看完整回答
反对 回复 2021-08-10
  • 2 回答
  • 0 关注
  • 221 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信