本篇主要以简洁明了的方式记录分享 go 语言 slice 切片的基本使用操作,以及 go 在使用 slice 切片过程中的注意事项等等。

golang切片(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 创建一个自定义 lencap 的切片
  • 使用 append 第二个参数必须时值类型,所以要用 ... 代表切片的所有值