切片

2024-05-19 00:56
阅读 359

在 Go 语言中,一个切片就是一个拥有长度和容量的数组段。你可以认为一个切片就是一个动态数组。它是一个引用类型,因此它传递的是一个指向数组的指针,而不是值本身。

切片的声明

切片的声明方式和数组有所不同。数组可以在声明的时候指定长度,但是切片只需要指定存储的数据类型即可。声明一个切片,可以使用以下的语法:

go
复制代码
var s []int // 声明一个整型切片 var s []string // 声明一个字符串切片

同时,还可以使用 make 函数来创建一个指定类型的切片:

go
复制代码
var s []int = make([]int, 5) // 创建一个长度为 5 的整型切片 s := make([]int, 5) // 创建一个长度为 5 的整型切片 s := make([]int, 5, 10) // 创建一个长度为 5,容量为 10 的整型切片

切片的长度和容量

切片拥有单独的长度和容量,长度表示切片中元素的个数,容量则表示切片能够容纳的元素个数。在创建切片的时候,可以通过传递第二个参数来指定切片的容量:

go
复制代码
s := make([]int, 5, 10) // 创建一个长度为 5,容量为 10 的整型切片

切片的长度和容量可以通过 len()cap() 函数来获取:

go
复制代码
package main import "fmt" func main() { s := make([]int, 0, 5) // 长度为 0,容量为 5 的切片 fmt.Printf("len=%d cap=%d slice=%v\n", len(s), cap(s), s) // 输出:len=0 cap=5 slice=[] }

切片的使用

切片可以像数组一样使用下标进行访问。与数组不同的是,切片的长度也可以使用 append() 函数来动态增加:

go
复制代码
package main import "fmt" func main() { s := []int{1, 2, 3} // 创建一个有 3 个元素的整型切片 s = append(s, 4, 5, 6) // 动态增加切片 s 的长度,并添加三个元素 fmt.Println(s) // 输出:[1 2 3 4 5 6] }

同时,切片还可以使用 copy() 函数来复制一个切片:

go
复制代码
package main import "fmt" func main() { s1 := []int{1, 2, 3} s2 := []int{4, 5, 6} copy(s1, s2) // 将 s2 中的元素复制到 s1 中 fmt.Println(s1) // 输出:[4 5 6] fmt.Println(s2) // 输出:[4 5 6] }

总结

切片是一个动态数组,它拥有自己的长度和容量,并且可以通过 append() 函数动态增加元素数量。同时复制一个切片也很容易,只需要使用 copy() 函数即可。

标签:
下载 APP