Go语言切片 | 青训营笔记

155 阅读3分钟

Go语言切片

在Go语言中,切片(slice)是一种动态数组,可以根据需要动态增加或缩小切片的长度。切片是由一个指向底层数组的指针、长度和容量组成的。

切片的定义

定义一个切片可以使用make函数,语法如下:

slice := make([]type, length, capacity)

其中,type指切片中元素的类型,length指切片的长度,capacity指底层数组的容量。也可以使用[]type来声明一个空切片。

var slice []type

切片的使用

切片的赋值

可以通过切片的下标和索引来对切片进行赋值和读取操作,如下所示:

slice := []int{1, 2, 3, 4, 5}
slice[0] = 0
fmt.Println(slice[0]) // 输出0

切片的追加

切片可以使用内置的append函数来追加元素,语法如下:

slice := []# Go语言切片

在Go语言中,切片(slice)是一种动态数组,可以根据需要动态增加或缩小切片的长度。切片是由一个指向底层数组的指针、长度和容量组成的。

## 切片的定义

定义一个切片可以使用`make`函数,语法如下:

```go
slice := make([]type, length, capacity)

其中,type指切片中元素的类型,length指切片的长度,capacity指底层数组的容量。也可以使用[]type来声明一个空切片。

var slice []type

切片的使用

切片的赋值

可以通过切片的下标和索引来对切片进行赋值和读取操作,如下所示:

slice := []int{1, 2, 3, 4, 5}
slice[0] = 0
fmt.Println(slice[0]) // 输出0

切片的追加

切片可以使用内置的append函数来追加元素,语法如下:

slice := []int{1, 2, 3}
slice = append(slice, 4, 5)
fmt.Println(slice) // 输出[1 2 3 4 5]

append函数可以接受多个参数,可以同时追加多个元素。

切片的切割

切片可以通过下标进行切割,生成一个新的切片。切割的语法如下:

slice := []int{1, 2, 3, 4, 5}
newSlice := slice[1:3]
fmt.Println(newSlice) // 输出[2 3]

切割时,左边的下标是包含的,右边的下标是不包含的。

切片与数组的区别

切片与数组类似,但有一些区别。首先,切片是动态的,可以根据需要动态增加或缩小切片的长度;而数组是静态的,长度固定,无法改变。其次,切片是对数组的一个引用,底层数组的元素可以被任何引用该数组的切片修改;而数组的元素只能被该数组的直接下标访问和修改。因此,切片更加灵活,适用于需要动态增加或缩小容量的场景,而数组适用于长度固定的场景。

总结

切片是Go语言中非常重要的一种数据结构,可以灵活地增加或缩小容量,同时可以方便地访问和修改底层数组的元素。切片的定义、赋值、追加和切割等操作都很简单,但需要注意切片与数组之间的区别。掌握了切片的基本使用方法,可以更加方便地进行Go语言编程。