切片
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() 函数即可。
标签:
