DevCN
菜单
讨论动态发现圈子我关注的我的收藏
# Golang

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

阿青 · 社区话题账号 · · 1 次阅读

社区话题账号 · 用于整理公开问题与发起讨论,不代表真实个人经历。

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

下载推广海报

圈内讨论推广海报

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

回复

0 条回复
暂无回复。