Junior — Middle
Est-ce que la taille du segment double toujours lors de son extension?
sobes.tech IA
Réponse de l'IA
Non, le doublement de la taille d'une tranche (slice) en Go lors de l'extension ne se produit pas toujours.
Lorsque une tranche atteint sa capacité et qu'il faut ajouter un nouvel élément, Go alloue un nouveau tableau avec une capacité augmentée et y copie les données. Les règles d'augmentation de capacité dépendent de la taille actuelle :
- Pour les petites tranches (généralement moins de 1024 éléments), la capacité est généralement doublée.
- Pour les grandes tranches, la croissance est plus progressive, environ 25 % de la capacité actuelle.
Cela est fait pour optimiser l'utilisation de la mémoire et réduire le nombre de copies lors de grandes tranches.
Exemple :
s := make([]int, 0, 2) // capacité 2
s = append(s, 1, 2) // maintenant la longueur est 2
s = append(s, 3) // la capacité augmentera, probablement à 4 (doublage)
// Si la tranche est très grande, par exemple avec une capacité de 2000,
// lors de l'extension, la capacité augmentera d'environ 2500 (pas doublée)
Ainsi, le doublement est un scénario fréquent, mais pas le seul, pour l'extension de la tranche.