Comment nettoyer un slice en Go ? Toutes les méthodes et pièges à éviter
Bonjour, collègues ! Je viens de commencer à apprendre Go et j'ai rencontré un problème qui, à première vue, devrait être trivial, mais je n'arrive pas à trouver de solution claire. J'ai un slice que j'utilise activement dans une boucle pour accumuler des données. Après chaque itération, je dois vider complètement ce slice pour recommencer à le remplir.
Voici un exemple simplifié de ce que je fais :
```go
package main
import "fmt"
func main() {
data := make([]int, 0, 10) // crée un slice avec une capacité initiale de 10
for i := 0; i < 3; i++ {
// Remplir le slice avec des données
for j := 0; j < 5; j++ {
data = append(data, j)
}
fmt.Println("Iteration", i, "data:", data)
// Ici, je dois vider data avant l'itération suivante
// data = ??? que mettre ici ?
}
}
```
J'ai essayé plusieurs options :
1. `data = nil` — cela remet le slice à zéro, mais est-ce que cela libère la mémoire allouée ? Ou pas ?
2. `data = data[:0]` — cela