Slice


本文摘自网络,作者,侵删。

slice的预留分配空间

通过 append 对数组进行追加的时候,并不是会直接分配内存扩容。而是会先检查是否存在预留分配空间,有的话可以直接往里写入,当预留分配空间使用完后,会进行扩容。
事实上很难预估数组使用的最大长度,所以golang遵循扩容规则:

  • 元素小于1024,则直接double,直至满足
  • 元素大于1024,则单次扩容1.25倍,即四分之一,直至满足

slice的切片机制

切片[]int和数组[3]int,是不同的数据结构
在切片中,包含指向数组的指针,当前长度及容量。在没有扩容的前提下,对切片进行修改会影响原组数
但是通过append对切片进行操作导致长度超过容积时,会发生扩容,复制原组数的值重新创建新的数组,此时,新数组和原数组互不影响


本文来自:简书

感谢作者:czaOrz

查看原文:Slice

相关阅读 >>

[concurrent-map]-并发map在Go中的使用

Go 内存模型 并发可见性

Golang 入门系列(五)Go语言中的面向对象

涂鸦智能 dubbo-Go 亿级流量的实践与探索

Go语言条件语句

开发者的福音,Go也支持linq了

Go版webrtc解密base64执行结果程序终止原因分析

Go验证身份证号

json序列化在Golang中的应用

Golang 是面向对象的么

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...