01
批量查询与结果收集
- 业务例子
- 分页读取商品或订单,把本页结果转换后追加到结果 Slice,最终批量写库或返回接口。
- 为什么适合
- 数据按顺序产生并连续访问,Slice 的缓存局部性好;预估数量后可预分配容量,减少扩容和复制。
- 注意
- 数据量不受控时不要无限 append,应分页处理、流式消费或设置上限。
Slice 适合处理长度会变化、但仍希望连续存储和高效顺序访问的数据。工程里真正需要关注的不是会不会 append,而是能否预估容量、是否共享底层数组,以及对象是否会被意外长期引用。
我会先判断数据是否适合连续存储,再根据可预估数量做 make([]T, 0, n) 预分配。传递 Slice 时我会明确底层数组所有权:允许复用就原地过滤,需要隔离就 copy;对于长期保存的子 Slice,还会避免它意外留住大数组。