Avatar ·

如何在Go中清空slice?所有方法及注意事项

大家好,我刚学Go,遇到了一个看似简单但找不到明确解决方案的问题。我有一个slice,在循环中用来累积数据。每次迭代后,我需要完全清空这个slice,以便重新填充。 以下是我做的简化示例: ```go package main import "fmt" func main() { data := make([]int, 0, 10) // 创建一个初始容量为10的slice for i := 0; i < 3; i++ { // 填充数据到slice for j := 0; j < 5; j++ { data = append(data, j) } fmt.Println("Iteration", i, "data:", data) // 这里需要在下次迭代前清空data // data = ??? 这里该写什么? } } ``` 我试过几种方法: 1. `data = nil` — 这会将slice置零,但不会释放已分配的内存?还是说会释放? 2. `data = data[:0]` — 这