本篇主要以简洁明了的方式记录分享 go 语言 slice 切片的基本使用操作,以及 go 在使用 slice 切片过程中的注意事项等等。
golang切片(slice)创建
- 可以使用make创建一个长度(len)为16的切片
- 可以使用make创建一个长度(len)为16,cap为32 的切片
var s []int
var s []int={2,3,4,5}
// 可以使用make创建一个长度(len)为16的切片
s := make([]int ,16 )
// 可以使用make创建一个长度(len)为16,cap为32 的切片
s := make([]int ,16 ,32)
用golang内置函数(append)追加切片(slice)
s1 := []int{0,1,2,3,4,5,6,7}
s2 :=append(s1,10)
s3 := append(s2,11)
s4 := append(s3,12,13,14)
用golang内置函数(cope)拷贝切片(slice)
s1 := []int
s2 := []int{2,3,4}
cope(s2,s1)
fmt.Println(s2)
- 拷贝执行结果
[2,3,4,0,0,0,0,0]
用golang内置函数删除切片(slice)
- 可以使用append实现删除操作
使用append删除slice指定第三个元素
s1 := []int{0,1,2,3,4,5,6,7}
s1 =append(s1[ : 3],s1[4 : ]...)
删除slice头尾元素
/*去除头部*/
s1 := []int{0,1,2,3,4,5,6,7}
s1 := s1[1:]
/*去除尾部*/
s1 := []int{0,1,2,3,4,5,6,7}
tail := s1[:len(s1)-1]
golang使用slice切片注意事项
- 向 slice 添加元素时如果超越了 cap 系统会重新分配更大的底层数组.
- 由于值传递的关系,必须接受 append 的返回值
- 向 slice 添加元素时如果超越了 cap 那么 cap 会成倍的扩大自身空间
- 可以使用 make 创建一个自定义 len 和 cap 的切片
- 使用 append 第二个参数必须时值类型,所以要用 ... 代表切片的所有值