c语言编程笔录

首页 >   > 笔记大全

笔记大全

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语言中非常重要的数据结构,它提供了便捷的数组操作方式。切片可以根据需要动态增长或缩小,支持获取子切片、追加元素、删除元素和修改元素等操作。另外,切片的长度和容量是切片的重要属性,注意合理设置切片的容量,避免频繁的内存分配和元素复制。