2016 - 2024

感恩一路有你

go语言入门 Go语言的slice为什么有这样的奇怪问题呢?

浏览量:1159 时间:2021-03-15 13:56:33 作者:admin

Go语言的slice为什么有这样的奇怪问题呢?

在阅读了我添加的打印输出后,我不知道问题所有者是否理解为什么会这样。

第68行s加9后,s的存储容量扩大到4。此时,s中只有三个整数,也就是说,再加一个整数就不会展开。如果没有扩展,则加法后生成的片的地址不会更改。第72行的输出证实了这一点。但是,虽然扩展的片具有相同的地址,但它们的长度不同。S仍然包含三个整数,而x已经包含四个整数。在第75行中,当附加s时,我们说s的存储容量是4。目前,只有三个整数,因此附加的数据将不会展开。相反,数据将存储在第四个成员的地址上。如果不扩大,地址就不会改变,所以12个直接覆盖11个。这就是为什么X和y最终是一样的。

我不知道我的答案是否清楚。如果有什么不清楚的地方,请指正。

Go语言的切片的扩容的倍数有什么规律?

关于golang中slice的扩展,通过在源代码运行时读取growslice,我们可以得到如下规则:

当旧片的容量小于1024时,新片的容量是旧片的两倍。超过1024后,一般认为在互联网上增长1.25倍。通过源代码和实际验证,我们发现扩展策略不是简单地扩展到原来片容量的2倍或1.25倍,而是内存对齐的操作。因此,规则是:扩容后的容量>=原容量的2倍或1.25倍。

如何学好golang语言并开发一个web应用?

如果你想学好golang并开发一个web应用程序,这并不难。您可以执行以下步骤:

go语言入门 我为什么放弃go语言 golang map减少gc

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。