go中切片的扩容策略是啥?谈谈你的理解。
1 个回答
你该反省的是你的见识与眼光,而不是你的真诚和善良。张子陵1、首先判断,如果新申请容量(cap)大于 2 倍的旧容量(old.cap),最终容量(newcap) 就是新申请的容量(cap)。 2、否则判断,如果旧切片的长度小于 1024,则最终容量(newcap)就是旧容量(old.cap)的两 倍,即(newcap=doublecap), 3、否则判断,如果旧切片长度大于等于 1024,则最终容量(newcap)从旧容量(old.cap) 开始循环增加原来的 1/4,即(newcap=old.cap,for {newcap += newcap/4})直到最终容量 (newcap)大于等于新申请的容量(cap),即(newcap >= cap) 4、如果最终容量(cap)计算值溢出,则最终容量(cap)就是新申请容量(cap)。 需要注意的是,切片扩容还会根据切片中元素的类型不同而做不同的处理,比如 int 和 string 类型的处理方式就不一样。发布于 2025-01-24 22:23 •IP属地 河南举报评论收藏
公众号进入网站体验更佳

