MST

星途 面试题库

面试题:Go语言切片扩容时新容量的计算规则是什么

请详细阐述Go语言中切片在进行扩容操作时,新容量是如何根据原切片的容量和当前添加元素情况来计算的。
44.1万 热度难度
编程语言Go

知识考点

AI 面试

面试题答案

一键面试
  1. 一般情况(原容量小于1024)
    • 如果原切片的容量小于1024,新容量会直接翻倍。例如,原切片容量为5,当需要扩容时,新容量变为10。
  2. 原容量大于等于1024
    • 当原切片容量大于或等于1024时,新容量会增加原容量的1/4。例如,原切片容量为1024,扩容后新容量为1024 + 1024/4 = 1280。
  3. 特殊情况
    • 如果新元素的个数加上原切片的元素个数小于上述计算出的新容量,就以计算出的新容量为准。
    • 如果新元素的个数加上原切片的元素个数大于上述计算出的新容量,那么新容量会直接设置为新元素个数加上原切片元素个数。例如,原切片有5个元素,容量为5,现在要添加7个新元素,原容量5小于1024,翻倍后新容量为10,但5 + 7 = 12 > 10,此时新容量就会直接设置为12。