Junior — Middle
Que se passe-t-il lors de l'appel de la méthode append et pourquoi renvoie-t-elle une nouvelle tranche?
sobes.tech IA
Réponse de l'IA
En Go, la méthode append est utilisée pour ajouter des éléments à une tranche (slice). Lorsqu'on appelle append, voici ce qui se passe :
- Si la capacité (capacity) de la tranche est suffisante, le nouvel élément est simplement ajouté au tableau existant, et une tranche pointant vers la partie mise à jour du tableau est renvoyée.
- Si la capacité n'est pas suffisante, un nouveau tableau avec une capacité augmentée est créé, les anciens éléments y sont copiés, puis le nouvel élément est ajouté.
C'est pourquoi append retourne une nouvelle tranche, parce que :
- En cas d'extension de capacité, une tranche pointant vers le nouveau tableau est renvoyée.
- Si la capacité est suffisante, une tranche pointant vers le même tableau mais avec une longueur augmentée est renvoyée.
Il est important d'assigner toujours le résultat de append à la variable, pour ne pas perdre la référence à la tranche mise à jour :
s := []int{1, 2, 3}
s = append(s, 4) // s pointe maintenant vers une tranche avec les éléments [1 2 3 4]
Ainsi, append retourne une nouvelle tranche parce qu'il peut changer le tableau de base en interne, et il faut mettre à jour la référence.