Golang 动态数组 slice。
定义
1 | type slice struct { |
创建 slice
采用 mallocgc 分配内存。
1 | // 创建 slice |
容量扩容策略
总结:
- 新容量 cap 大于旧容量 old.cap 的 2 倍时,直接采用 cap;
- 旧容量 old.cap 小于 1024 时,扩容为旧容量 old.cap 的 2 倍;
- 旧容量 old.cap 大于等于 1024 时,按照旧容量 old.cap 的 1.25 倍指数幂增长;
- 当步骤 3 溢出时,直接采用新容量 cap 的值;
1 | // growslice handles slice growth during append. |