数组(数组长度固定)
定义:
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循环
- // 创建一个整型切片,并赋值
- slice := []int{10, 20, 30, 40}
- // 迭代每一个元素,并显示其值
- for index, value := range slice {
- fmt.Printf("Index: %d Value: %d\n", index, value)
- }