MST

星途 面试题库

面试题:Go语言切片扩容机制

在Go语言中,描述一下切片在扩容时的基本流程,以及扩容时新容量是如何确定的?
17.8万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

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