在 Go 语言中,清空数组或切片有以下两种常用方法:
![图片[1]_Golang 清空数组的两种方法小结_知途无界](https://zhituwujie.com/wp-content/uploads/2025/06/d2b5ca33bd20250623134826.png)
方法一:重新分配空切片
package main
import "fmt"
func main() {
// 原始切片
slice := []int{1, 2, 3, 4, 5}
fmt.Println("原始切片:", slice) // 输出: [1 2 3 4 5]
// 方法1: 重新分配空切片
slice = slice[:0]
fmt.Println("清空后:", slice) // 输出: []
fmt.Println("底层数组容量:", cap(slice)) // 输出: 5 (底层数组未释放)
}
特点:
- 只是将长度设为0,底层数组仍然保留
- 内存未被释放,适合后续重用相同容量的切片
- 最快的方法,时间复杂度 O(1)
方法二:创建新切片
package main
import "fmt"
func main() {
// 原始切片
slice := []int{1, 2, 3, 4, 5}
fmt.Println("原始切片:", slice) // 输出: [1 2 3 4 5]
// 方法2: 创建新切片
slice = nil // 或 slice = []int{}
fmt.Println("清空后:", slice) // 输出: []
fmt.Println("底层数组容量:", cap(slice)) // 输出: 0 (底层数组可能被GC回收)
}
特点:
- 完全释放底层数组,由垃圾回收器回收
- 适合不再需要该切片内容的情况
- 如果后续再添加元素,会触发新的内存分配
选择建议
- 如果需要重用切片且元素类型不大,使用方法一 (
slice = slice[:0]) - 如果切片很大且不再需要,使用方法二 (
slice = nil或slice = []int{}) 释放内存
对于固定长度的数组,可以使用 array = [size]type{} 来重置为零值。
© 版权声明
文中内容均来源于公开资料,受限于信息的时效性和复杂性,可能存在误差或遗漏。我们已尽力确保内容的准确性,但对于因信息变更或错误导致的任何后果,本站不承担任何责任。如需引用本文内容,请注明出处并尊重原作者的版权。
THE END

























暂无评论内容