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

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

⚫ 首先判断,如果新申请容量大于 2 倍的旧容量,最终容量就是新申请的容 量

⚫ 否则判断,如果旧切片的长度小于 1024,则最终容量就是旧容量的两倍

⚫ 否则判断,如果旧切片长度大于等于 1024,则最终容量从旧容量开始循环增加原来的 1/4, 直到最终容量大于等于新申请的容量

⚫ 如果最终容量计算值溢出,则最终容量就是新申请容量

发表评论

后才能评论