go1.17之前
1.当期望容量 > 两倍的旧容量时,直接使用期望容量作为新切片的容量
2.如果旧容量 < 1024(注意这里单位是元素个数),那么直接翻倍旧容量
3.如果旧容量 > 1024,那么会进入一个循环,每次增加25%直到大于期望容量
go1.18 之后
- 当期望容量 > 两倍的旧容量时,直接使用期望容量作为新切片的容量
2.如果旧容量 < 256(注意这里单位是元素个数),那么直接翻倍旧容量
- 如果容量大于 256, 扩容((旧容量 + 3 * 256) / 4)
差别
大于预定阈值时, 不在是粗暴的降为为 1.25 倍扩容, 而是通过增加一个常量(threshold=256)来使得扩容更加平滑切片(slice)扩容规则
本文由博客一文多发平台 OpenWrite 发布!