Golang Slice 的扩容机制,有什么注意点?

参考解析

Go 中切片扩容的策略是这样的:

  1. - 首先判断,如果新申请容量大于 2 倍的旧容量,最终容量就是新申请的容
  2. - 否则判断,如果旧切片的长度小于 1024,则最终容量就是旧容量的两倍
  3. - 否则判断,如果旧切片长度大于等于 1024,则最终容量从旧容量开始循环 增加原来的 1/4, 直到最终容量大于等于新申请的容量
  4. - 如果最终容量计算值溢出,则最终容量就是新申请容量