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

标签 go

<分区>

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

例如:

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

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

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

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

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

最佳答案

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

PHP的数组其实就是底层的哈希表。 Go 有真正的数组,它有 slice ,这是对数组更强大的抽象。

拥有真正的数组,为您提供可预测的内存布局和真正的 O(1) 索引(Go 的 slice 也是如此,它在内部使用数组)。对底层数据存储使用 HashMap 会导致所有操作的开销不断增加,而且无法更好地控制数据局部性。

关于Go:数组和映射必须是不同的概念/特征吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25294290/

相关文章:

go - 正确的数据无法传递到Twilio

go - 如何读取文件,如果它不是有效的 UTF-8 则错误中止?

go - 比较文本文件的列

go - 使用 Go 模块时如何获得依赖项的主分支

go - 在 Goroutine 中等待管道 io.Copy 时发生死锁

json - 为什么 JSON 解析不会因传递给 Decode() 的完全不同的类型而失败?

struct - golang 2个 slice 类型,1个字段

go - 当消费者尝试连接到停机代理时,Sarama 库中会发生什么?

go - 我如何找到一个go包的版本

c++ - 如何从 DLL 的导出函数中获取 std::string?