RSS
菜单

Go 的 slice 和数组有什么区别?append 有什么坑?

数组长度固定([5]int),是值类型、传参整体拷贝;slice 是动态视图([]int),底层是 ptr+len+cap 结构体,传参传引用。append 的坑:① 容量不足时触发扩容(翻倍或 1.25 倍),底层数组会换新,旧 slice 仍指向旧数组;② 多个 slice 共享底层数组时,一个 append 可能意外修改另一个的数据;③ 频繁 append 多次扩容浪费性能,建议 make([]T, 0, n) 预分配。日常几乎都用 slice。

下载推广海报

圈内讨论推广海报

《Go 的 slice 和数组有什么区别?append 有什么坑?》完整推广海报
一起交流

全部回复 0

分享经验,让问题更进一步

讨论,从你的观点开始

还没有回复,欢迎补充经验或分享不同的思路。