- 预先分配合适容量减少内存重新分配:
- 当我们知道切片可能容纳的大致元素数量时,在创建切片时就预先分配好足够的容量。这样在向切片追加元素时,如果追加的元素数量不超过预先分配的容量,就不会发生内存重新分配。因为切片底层的数组在内存中是连续的,每次内存重新分配都涉及到将原数组的数据复制到新的更大的数组,这是一个比较耗时的操作。预先分配合适容量可以减少这种操作的次数,提高程序性能。
- 使用
make
函数初始化切片:
make
函数可以用于创建切片并指定其长度和容量。其语法为make([]T, length, capacity)
,其中T
是切片元素的类型,length
是切片的初始长度,capacity
是切片的初始容量。
- 示例代码如下:
package main
import "fmt"
func main() {
// 使用make函数创建一个初始长度为0,容量为10的整数切片
s := make([]int, 0, 10)
for i := 0; i < 5; i++ {
s = append(s, i)
}
fmt.Println(s)
}
- 在上述代码中,首先使用
make([]int, 0, 10)
创建了一个容量为10的整数切片,初始长度为0。然后通过append
函数向切片中追加元素,由于容量足够,在追加5个元素的过程中不会发生内存重新分配。如果不预先分配容量,直接使用var s []int
声明切片,每次追加元素都可能导致内存重新分配。