Golang Slice 的扩容机制,有什么注意点
Go 中切片扩容的策略是这样的:
⚫ 首先判断,如果新申请容量大于 2 倍的旧容量,最终容量就是新申请的容 量
⚫ 否则判断,如果旧切片的长度小于 1024,则最终容量就是旧容量的两倍
⚫ 否则判断,如果旧切片长度大于等于 1024,则最终容量从旧容量开始循环增加原来的 1/4, 直到最终容量大于等于新申请的容量
⚫ 如果最终容量计算值溢出,则最终容量就是新申请容量
Go 中切片扩容的策略是这样的:
⚫ 首先判断,如果新申请容量大于 2 倍的旧容量,最终容量就是新申请的容 量
⚫ 否则判断,如果旧切片的长度小于 1024,则最终容量就是旧容量的两倍
⚫ 否则判断,如果旧切片长度大于等于 1024,则最终容量从旧容量开始循环增加原来的 1/4, 直到最终容量大于等于新申请的容量
⚫ 如果最终容量计算值溢出,则最终容量就是新申请容量