面试题答案
一键面试切片扩容情况
当向切片中添加元素时,如果当前切片的容量不足以容纳新元素,就会发生扩容。
扩容大致规则
- 若新的元素个数小于等于当前容量的两倍且原切片容量小于1024,则新容量会变为原容量的两倍。
- 若原切片容量大于等于1024,则新容量会变为原容量的1.25倍。
- 扩容时会重新分配内存,将原切片内容复制到新的内存地址。
使用内置copy函数复制切片的注意事项
- 目标和源切片:
copy
函数的第一个参数是目标切片,第二个参数是源切片。目标切片必须已经分配好足够的空间来容纳源切片中要复制的元素。 - 复制数量:
copy
函数会返回实际复制的元素个数,这个返回值在处理部分复制时可能很有用。如果目标切片容量小于源切片,只会复制目标切片能容纳的元素个数。 - 不改变容量:
copy
函数只复制元素值,不会改变切片的容量。如果需要增加容量,需要手动创建新的切片并重新分配容量。