Go语言基础
介绍
基础
介绍
- 本文介绍Go语言中切片(slice)(切片声明、切片初始化、切片基础操作、多维切片)等相关知识。
基础
切片
- 切片(slice)是对数组的一个连续片段的引用,切片是一个引用类型。
- 切片是长度可变的数组,由三部分组成:
- 指针:指向的数组元素的地址
- 长度:元素的数量
- 容量:切片可容纳多少元素
切片声明
- 需要指定组成元素的类型,不需要指定存储元素的个数。
- 声明后,默认初始化为 nil,意思是不存在此切片引用。
package main
import "fmt"
func main() {
// 声明一个切片
var slice1 []int
fmt.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 main
import "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