Go 数组array 切片 slice 07

切片slice

  • 其本身并不是数组,它只想底层数组
  • 作为变长数组的替代方案,可以关联底层数组测局部或全部
  • 为引用类型
  • 可以直接创建或从底层数组获取生成
  • 使用len()获取元素个数,cap()获取容量
  • 一般使用make()创建
  • 如果多个slice指向相同底层数组,其中一个的值改变会影响全部
  • make([],len,cap)
  • 其中cap可以省略,则和len的值相同
  • len表示存数的元素个数,cap表示容量

创建slice 声明方法1

//声明一个slice
var a []int
fmt.Println(a)

数组的截取 单个元素 [x]

a := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9}
fmt.Println(a)
// 获得数组a的下标1的元素的值
b := a[1]
fmt.Println(b)
[1 2 3 4 5 6 7 8 9 0]
2

数组的截取 多个元素 [x:y]

包含起始索引,不包含终止索引,这里包括5不包括10,实际只能取到5:9

a := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9}
fmt.Println(a)
//包含起始索引,不包含终止索引,这里包括5不包括10,实际只能取到5:9
c := a[5:10]
fmt.Println(c)
[1 2 3 4 5 6 7 8 9 0]
[6 7 8 9 0]

数组的截取 多个元素 [x:]

从数组的第x个索引元素取到数组的结束,和[x:len(a)]一样

a := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9}
fmt.Println(a)
c := a[5:]
fmt.Println(c)
[1 2 3 4 5 6 7 8 9 0]
[6 7 8 9 0]

数组的截取 多个元素 [:y]

从数组的开头取到 y-1 个索引的元素

a := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9}
fmt.Println(a)
c := a[:5]
fmt.Println(c)
[1 2 3 4 5 6 7 8 9 0]
[1 2 3 4 5]

创建slice 声明方法2