¿Cómo limpiar un slice en Go? Todos los métodos y trampas
¡Hola, colegas! Acabo de empezar a aprender Go y me encontré con un problema que, aunque parece trivial, no encuentro una solución clara. Tengo un slice que uso activamente en un bucle para acumular datos. Después de cada iteración, necesito limpiar completamente este slice para empezar a llenarlo de nuevo.
Aquí hay un ejemplo simplificado de lo que hago:
```go
package main
import "fmt"
func main() {
data := make([]int, 0, 10) // creamos un slice con capacidad inicial 10
for i := 0; i < 3; i++ {
// Llenamos el slice con datos
for j := 0; j < 5; j++ {
data = append(data, j)
}
fmt.Println("Iteration", i, "data:", data)
// Aquí necesito limpiar data antes de la siguiente iteración
// data = ??? ¿qué poner aquí?
}
}
```
He probado varias opciones:
1. `data = nil` — esto pone el slice a nil, pero ¿libera la memoria asignada? ¿O no?
2. `data = data[:0]` — esto