数组与切片 | 青训营笔记

59 阅读2分钟

数组(数组长度固定)

定义:

   1.  var a[3]int = [3]int{1,2,3}

2.    var a[3]int 

3.    a:=[3]int{1,2,3}

切片

定义:

1.       var a = []int{1,2,3}

2.       var a []int

3.       a:=[]int{1,2,3}

切片插入元素

结尾a=append(a, 1,2,3)/append(a,[]int{1,2,3}...)

开头a=append([]int{1,2,3},a...)

中间

1.    a = append(a[:i], append([]int{x}, a[i:]...)...) // 在第i个位置插入x

2.    a = append(a[:i], append([]int{1,2,3}, a[i:]...)...) // 在第i个位置插入切片

切片删除元素

开头删除

1.    a = aN:/a=append(a[:0],a[N:]...)(a[:0]是一个空切片,再添加a[N:],等于是把前N个删除后的切片与空切片连接组成新的切片)

2.    a = a[:copy(a,a[N:])](copy返回的是copy的元素的数量,从第0个元素选取,选取copy个元素,并将前N个元素删除后的切片copy到a中,此时a=copy个元素+(len-copy)元素,选a[:copy(a,a[:N])]就表示选取前len-N个元素)

中间删除

3.       a = append(a[:i], a[i+1:]...) // 删除中间1个元素/a = append(a[:i], a[i+N:]...) // 删除中间N个元素(相当于把a[:i], a[i+1:]两个切片连在一起组成新的a,...的作用就是将append()里的内容连接成一个新的切片)

4.       a = a[:i+copy(a[i:], a[i+1:])] // 删除中间1个元素/a = a[:i+copy(a[i:], a[i+1:])] // 删除中间1个元素(copy(a[i:], a[i+1:])将后len-i-1个元素向前移动一位,覆盖掉第i个元素,此时a的第i个元素没有了,在选取i+copy-1个元素,copy=len-i)

尾部删除

a = a[:len(a)-1] // 删除尾部1个元素/a 遍历切片,使用for循环

  1. // 创建一个整型切片,并赋值
  2. slice := []int{10, 20, 30, 40}
  3. // 迭代每一个元素,并显示其值
  4. for index, value := range slice {
  5. fmt.Printf("Index: %d Value: %d\n", index, value)
  6. }