Effacer des tranches dans Go
L'extrait de code fourni illustre une approche pour « effacer » une tranche en définissant sa longueur sur 0 :
package main import "fmt" func main() { letters := []string{"a", "b", "c", "d"} fmt.Println(cap(letters)) fmt.Println(len(letters)) // clear the slice letters = letters[:0] fmt.Println(cap(letters)) fmt.Println(len(letters)) }
Bien que cette approche puisse sembler effacer le contenu de la tranche, elle ne libère pas la mémoire sous-jacente associée à la tranche au garbage collector. Pour vraiment effacer une tranche et récupérer sa mémoire, la meilleure pratique consiste à la définir sur nil :
package main import "fmt" func main() { letters := []string{"a", "b", "c", "d"} fmt.Println(cap(letters)) fmt.Println(len(letters)) // clear the slice letters = nil fmt.Println(cap(letters)) fmt.Println(len(letters)) }
Définir une tranche sur zéro présente plusieurs avantages :
Il est important de noter que changer la capacité d'une tranche à zéro n'efface pas la tranche ni ne libère la mémoire sous-jacente. Cependant, définir une tranche sur zéro supprime efficacement toute mémoire allouée et réinitialise la tranche à son état initial.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!