Middle
Comment la capacité de la tranche change-t-elle lors de son extension?
sobes.tech IA
Réponse de l'IA
En Go, une tranche (slice) est une structure qui contient un pointeur vers un tableau, une longueur et une capacité. Lors de l'ajout d'éléments avec append, si la longueur de la tranche atteint sa capacité actuelle, une réallocation de mémoire se produit : un nouveau tableau avec une capacité augmentée est créé, et les données y sont copiées.
Les règles pour changer la capacité ne sont pas strictement fixes, mais généralement :
- Pour les petites tranches (jusqu'à 1024 éléments), la capacité double.
- Pour les grandes tranches, l'augmentation devient plus conservatrice (environ 25% de la capacité actuelle).
Cela permet d'équilibrer entre la fréquence des allocations et l'utilisation de la mémoire.
Exemple :
s := make([]int, 0, 2) // longueur 0, capacité 2
s = append(s, 1) // longueur 1, capacité 2
s = append(s, 2) // longueur 2, capacité 2
s = append(s, 3) // longueur 3, la capacité augmente, par exemple, à 4
Ainsi, la capacité du slice croît de façon exponentielle lors de l'expansion, ce qui optimise la performance lors de l'ajout d'éléments.