Sobes.tech
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 :

  1. 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.
  2. 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.