golang切片用法
更新时间:2023-11-10切片的介绍
切片是Go语言中的一种内置数据结构,它提供了对数组的抽象。切片底层是一个数组,但是切片的长度是可变的,可以根据需要动态增长或缩小。与数组相比,切片更灵活,更易于使用。
// 创建一个切片 s := []int{1, 2, 3, 4, 5} fmt.Println(s) // 输出: [1 2 3 4 5]
切片的基本操作
切片具有获取子切片、追加元素、删除元素和修改元素等基本操作。
// 获取子切片 subSlice := s[1:3] fmt.Println(subSlice) // 输出: [2 3] // 追加元素 s = append(s, 6) fmt.Println(s) // 输出: [1 2 3 4 5 6] // 删除元素 s = append(s[:2], s[3:]...) fmt.Println(s) // 输出: [1 2 4 5 6] // 修改元素 s[0] = 0 fmt.Println(s) // 输出: [0 2 4 5 6]
切片的长度和容量
切片有两个重要属性:长度和容量。切片的长度表示其中元素的个数,切片的容量指的是从切片的第一个元素开始,到底层数组的最后一个元素的个数。
// 切片的长度 fmt.Println(len(s)) // 输出: 5 // 切片的容量 fmt.Println(cap(s)) // 输出: 5
切片的扩容
当切片的元素个数超过了容量时,切片会自动扩容。扩容时,会创建一个新的更大的底层数组,并将原数组的元素复制到新数组中。由于扩容操作可能会导致重新分配内存和复制元素,因此在对性能要求较高的场景中应尽量预估切片的容量,避免频繁的扩容操作。
// 切片的容量扩充 s = append(s, 7) fmt.Println(len(s)) // 输出: 6 fmt.Println(cap(s)) // 输出: 10
总结
切片是Go语言中非常重要的数据结构,它提供了便捷的数组操作方式。切片可以根据需要动态增长或缩小,支持获取子切片、追加元素、删除元素和修改元素等操作。另外,切片的长度和容量是切片的重要属性,注意合理设置切片的容量,避免频繁的内存分配和元素复制。