slice 的创建有两种方法
test := []int{2,3}
或者是使用make,而且通常我们使用 make创建的情况比较多
例如:
test := make([]int, 5, 5) // 创建一个类型为 int,长度为 5,容量为 5 的切片
fmt.Println(len(test), cap(test)) // 5 5
test1 := make([]int, 3) //如果不指定容量,默认容量等于初始时的长度
fmt.Println(len(test1),cap(test1)) // 3 3
slice 的长度和容量可以自己是可以动态改变的, slice 其实是数组的某一部分
test := make([]int,0) // 创建一个长度为0,容量为0 的数组
fmt.Println(len(test),cap(test)) // 0 0
test = append(test, 1)
fmt.Println(len(test),cap(test)) // 1 1
test = append(test, 1)
fmt.Println(len(test),cap(test)) // 2 2
test = append(test, 1)
fmt.Println(len(test),cap(test)) // 3 4
当数组的容量不够时,会重新申请一个两倍于当前长度的 slice,所以在使用过程中,尤其是频繁去往一个 slice 中 append 数据,需要尽可能给一个相对准确的容量, 减少分配过程的损耗。
相关链接:
网友评论