Go slice 扩容策略详解:翻倍扩容、1.25 倍与内存对齐
append 时 len < cap 直接用;len == cap 触发扩容:① 新容量估算:期望 = 旧 cap + 追加数;oldcap < 256 → newcap = oldcap × 2;oldcap >= 256 → newcap += (oldcap + 3×256) / 4(约 1.25 倍);② 内存对齐修正:按元素类型大小向上取整到分配类的规格(如 8 字节对齐的 size class),实际 newcap 可能大于估算值。扩容分配新数组并拷贝旧元素(O(n))。建议:预估容量 make([]T, 0, n) 避免多次扩容。
一起交流
分享经验,让问题更进一步
讨论,从你的观点开始
还没有回复,欢迎补充经验或分享不同的思路。