面试题答案
一键面试- 触发扩容情况: 当切片的容量不足以容纳新追加的元素时,会触发扩容。在Go语言中,当向初始容量为5的切片追加第6个元素时,就会触发扩容。
- 扩容后的新容量: 扩容后的新容量一般为原容量的2倍(如果原容量小于1024)。对于初始容量为5的切片,扩容后新容量为10。
- 扩容一般规则:
- 如果原切片容量小于1024,新容量会变为原容量的2倍。
- 如果原切片容量大于或等于1024,新容量会变为原容量的1.25倍。
- 该场景具体变化过程:
- 初始切片容量为5,当追加第6个元素时,由于5的容量无法容纳,触发扩容。
- 按照小于1024时扩容为2倍的规则,新容量变为10,Go语言会分配一个新的底层数组,大小为10,然后将原切片中的5个元素复制到新数组中,再将新追加的元素放入新数组中合适的位置,此时切片的长度变为6,容量变为10。