第五节——切片

切片

  1. 切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。
  2. 切片是一个引用类型,它的内部结构包含地址、长度和容量。切片一般用于快速地操作一块数据集合。

切片定义

  1. 定义格式:var name []数据类型
  2. 例子:var a []string
  3. 从数组中获取切片
a := [5]int{
    
    1, 2, 3, 4, 5}
s := a[1:3]

使用make定义切片

  1. 定义格式:make([]T, size, cap)
  2. 例子:a := make([]int, 2, 10)
    在这里插入图片描述
    在这里插入图片描述

切片的赋值与拷贝

  1. 拷贝前后两个变量共享底层数组,对一个切片的修改会影响另一个切片的内容
  2. 例子:
s1 := make([]int, 3) //[0 0 0]
s2 := s1             //将s1直接赋值给s2,s1和s2共用一个底层数组
s2[0] = 100
fmt.Println(s1) //[100 0 0]
fmt.Println(s2) //[100 0 0]
  1. 使用copy()函数复制切片,改变其一不会影响另一个
  2. 例子:
a := []int{
    
    1, 2, 3, 4, 5}
c := make([]int, 5, 5)
copy(c, a)     //使用copy()函数将切片a中的元素复制到切片c

切片的遍历,可以使用for与for range

  1. 例子:
s := []int{
    
    1, 3, 5}

for i := 0; i < len(s); i++ {
    
    
	fmt.Println(i, s[i])
}

for index, value := range s {
    
    
	fmt.Println(index, value)
}

使用append方法给切片动态添加新元素

  1. 例子:
var s []int
s = append(s, 1)        // [1]
s = append(s, 2, 3, 4)  // [1 2 3 4]
s2 := []int{
    
    5, 6, 7}  
s = append(s, s2...)    // [1 2 3 4 5 6 7]

从切片中删除元素

  1. 切片没有删除方法,只能截取删除元素前的片段与删除元素后的片段,略过删除元素后进行合并
  2. 例子:
a := []int{
    
    30, 31, 32, 33, 34, 35, 36, 37}
// 要删除索引为2的元素
a = append(a[:2], a[3:]...)
fmt.Println(a) //[30 31 33 34 35 36 37]

Guess you like

Origin blog.csdn.net/qq_37589805/article/details/121501796