go学习笔记:dst1 := make([]int, 4, 5) 中的 4,5 是什么意思
语法格式
make([]int, length, capacity)
参数解释
- 第一个参数 4:长度(length) - 切片的初始长度,即切片中实际包含的元素个数
- 第二个参数 5:容量(capacity) - 底层数组的总容量,即在不重新分配内存的情况下,切片可以增长到的最大长度
具体例子
dst1 := make([]int, 4, 5)
// 结果:dst1 = [0, 0, 0, 0]
// len(dst1) = 4
// cap(dst1) = 5
内存布局
底层数组:[0, 0, 0, 0, 0] (容量为5)
切片引用:[0, 0, 0, 0] (长度为4)
为什么这样设计?
1.长度(4):决定了切片当前有多少个元素
2.容量(5):为未来的 append 操作预留空间,避免频繁的内存重新分配
实际效果
dst1 := make([]int, 4, 5)
fmt.Println(len(dst1)) // 输出:4
fmt.Println(cap(dst1)) // 输出:5
// 可以追加一个元素而不重新分配内存
dst1 = append(dst1, 10)
fmt.Println(len(dst1)) // 输出:5
fmt.Println(cap(dst1)) // 输出:5 (容量不变)
// 再追加一个元素,需要重新分配内存
dst1 = append(dst1, 20)
fmt.Println(cap(dst1)) // 输出:10 (容量翻倍)

浙公网安备 33010602011771号