栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么要使用数组而不是切片?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么要使用数组而不是切片?

正如Akavall所说,数组是可哈希的。这意味着它们可以用作地图的键。

它们也通过价值传递。每次将其传递给函数或将其分配给另一个变量时,它都会对其进行完整复制。

它们可以通过编码/二进制序列化。

它们还可以用于控制内存布局。由于它不是引用,因此当将其放置在结构中时,它将分配那么多的内存作为该结构的一部分,而不是像切片那样将等效的指针放在那里。

最重要的是,除非您知道自己在做什么,否则不要使用数组。


哈希/可序列化都很好,但是我不确定它们是否确实具有吸引力

如果您想拥有md5散列图,该怎么办?无法使用字节片,因此您需要执行以下操作来绕过类型系统:

// 16 bytestype hashableMd5 struct {a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p byte}

然后为其创建序列化函数。可哈希数组意味着您可以仅将其称为[16] byte。

听起来越来越接近C的malloc,sizeof

不,这与malloc或sizeof无关。这些是分配内存并获取变量的大小。

但是,CGo是此的另一个用例。cgo命令创建的类型与其对应的C类型具有相同的内存布局。为此,有时需要插入未命名的数组进行填充。

如果问题可以用…来解决…使用切片的性能为零/微不足道…

数组还可以防止间接使某些类型的代码更快。当然,这是一个很小的优化,几乎在所有情况下都是微不足道的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/403790.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号