切片

动态数组

切片结构
切片结构

数据结构

type slice struct {
	array unsafe.Pointer
	len   int
	cap   int
}

面试题

slice 是如何扩容的?

切片扩容的具体策略如下:

如果切片当前容量小于 1024(或在 Go 1.18 及更高版本中是 256),扩容时会将容量翻倍,即新容量等于原容量的 2 倍;
当切片当前容量大于等于 1024s(或在 Go 1.18 及更高版本中为 256),扩容时会将容量增大大约 25%

slice 的内存分配?

切片(slice)的内存分配涉及到底层数组的分配和切片结构本身的创建。

底层数组的内存分配:

最后更新于