Slice


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

slice的预留分配空间

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

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

slice的切片机制

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


本文来自:简书

感谢作者:czaOrz

查看原文:Slice

相关阅读 >>

常见的 Go 处理字符串的技巧

Golang是单进程的吗?

Golang如何生成json及解析json

Golang后端面试汇总-001

Go - time.rfc3339 时间格式化

聊聊Gost的objectpool

Golang 获取当前外网ip/地址/运营商

Golang base64字符串的编码和解码

dubbo-Go 应用维度注册模型

Go - 切片

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




打赏

取消

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

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

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

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

评论

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