切片(Slice)在 Go 语言中是一种动态可变长度的序列,其本质是数组的引用。切片的底层逻辑包含一个指向数组的指针、长度和容量。切片的长度表示元素数量,容量从数组开始数至末尾。因此,切片作为引用类型,其数据结构可以理解为包含三个元素的结构体。使用 `make` 函数定义切片时,第一个参数是切片类型,第二个参数是长度,第三个参数是容量。若省略第三个参数,容量默认等于长度。例如:`make([]int, 5)`。直接定义切片时,通过 `[]` 符号,长度和容量自动根据元素数量确定。例如:`[]string{"apple", "banana", "cherry"}`。通过数组或已有切片定义新切片时,可以使用 `[:]`。例如:`newSlice := oldSlice[:]`。遍历切片主要有两种方法:使用 `for` 循环和 `range` 关键字。`for` 循环通过索引访问每个元素,而 `range` 关键字则返回索引和元素。若仅需元素值,可以忽略第一个返回值。切片操作包括访问、修改、添加和删除元素。访问元素通过索引,修改元素同样使用索引。添加元素则使用 `append` 函数。删除元素时,`append` 和 `copy` 函数结合使用。例如,删除索引为 `i` 的元素,可以使用 `s = append(s[:i], s[i+1:]...)`。进行元素删除时,记得修改原始切片会导致数据丢失,可以先复制切片,再进行删除操作以避免修改原始数据。