Junior — Middle
Que se passera-t-il avec la longueur et la capacité du slice si on y ajoute 10 éléments alors qu'il est initialement vide?
sobes.tech IA
Réponse de l'IA
Si vous avez une tranche vide en Go (longueur et capacité égales à 0), et que vous y ajoutez 10 éléments avec la fonction append, alors :
- La longueur de la tranche sera de 10 — le nombre d'éléments que vous avez ajoutés.
- La capacité de la tranche sera augmentée automatiquement, généralement avec une marge, pour éviter des réallocations fréquentes de mémoire. La capacité exacte dépend de l'implémentation, mais elle sera souvent de 16 ou plus, pour accueillir de nouveaux éléments et avoir une marge pour de futures ajouts.
Exemple :
var s []int // tranche vide
s = append(s, make([]int, 10)...) // ajout de 10 éléments
fmt.Println(len(s)) // 10
fmt.Println(cap(s)) // >=10, généralement 16 ou 20
Ainsi, la capacité augmente dynamiquement pour gérer efficacement la mémoire lors de la croissance de la tranche.