Go语言基础
介绍
基础
介绍
- 本文介绍Go语言中切片(slice)(切片声明、切片初始化、切片基础操作、多维切片)等相关知识。
基础
切片
- 切片(slice)是对数组的一个连续片段的引用,切片是一个引用类型。
- 切片是长度可变的数组,由三部分组成:
- 指针:指向的数组元素的地址
- 长度:元素的数量
- 容量:切片可容纳多少元素
切片声明
- 需要指定组成元素的类型,不需要指定存储元素的个数。
- 声明后,默认初始化为 nil,意思是不存在此切片引用。
package mainimport "fmt"func main() {// 声明一个切片var slice1 []intfmt.Printf("slice1 type: %T, value: %v\n", slice1, slice1)// 自动类型推导slice2 := []int{}fmt.Printf("slice2 type: %T, value: %v\n", slice2, slice2)
}
输出结果
slice1 type: []int, value: []
slice2 type: []int, value: []
切片初始化
- 切片初始化方式较多,具体如下
package mainimport "fmt"func main() {// 字面量初始化var slice1 []int = []int{1, 2, 3, 4, 5}fmt.Println("slice1: ", slice1, ", cap: ", cap(slice1))// 字面量初始化空切片var slice2 []int = []int{}fmt.Println("slice2: ", slice2, ", cap: ", cap(slice2))// 从数组创建并初始化切片var arr [5]int = [5]int{1, 2, 3, 4, 5}slice3 := arr[0:3]fmt.Println("slice3: ", slice3, ", cap: ", cap(slice3))slice4 := arr[0:2:2]fmt.Println("slice4: ", slice4, ", cap: ", cap(slice4))// 从切片创建并初始化切片slice5 := slice4[:1]fmt.Println("slice5: ", slice5, ", cap: ", cap(slice5))slice6 := slice4[1:]fmt.Println("slice6: ", slice6, ", cap: ", cap(slice6))slice7 := slice4[:]fmt.Println("slice7: ", slice7, ", cap: ", cap(slice7))slice8 := slice4[0:0