面试题答案
一键面试- 切片扩容基本流程:
- 当向切片中追加元素,且当前容量不足以容纳新元素时,就会触发扩容。
- Go语言运行时会创建一个新的底层数组,新数组的大小根据扩容规则确定。
- 然后将原切片中的元素复制到新的底层数组对应的位置上。
- 最后返回新的切片,该切片指向新的底层数组,并且具有新的容量。
- 扩容时新容量的确定:
- 如果原切片的容量小于1024,那么新容量会直接翻倍。
- 如果原切片的容量大于或等于1024,新容量会增加原容量的1/4。
- 例如,原切片容量为512,扩容后新容量为1024;原切片容量为2048,扩容后新容量为2048 + 2048/4 = 2560。