Golang 清空数组的两种方法小结

在 Go 语言中,清空数组或切片有以下两种常用方法:

图片[1]_Golang 清空数组的两种方法小结_知途无界

方法一:重新分配空切片

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 = nilslice = []int{}) 释放内存

对于固定长度的数组,可以使用 array = [size]type{} 来重置为零值。

© 版权声明
THE END
喜欢就点个赞,支持一下吧!
点赞62 分享
评论 抢沙发
头像
欢迎您留下评论!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容