Junior — Middle
Pourquoi est-il important de prendre en compte la capacité des slices lors du travail avec des tableaux en Go?
sobes.tech IA
Réponse de l'IA
En Go, les slices sont des structures dynamiques qui contiennent un pointeur vers un tableau, une longueur et une capacité. La capacité du slice détermine combien d'éléments il peut contenir sans allouer de nouvelle mémoire.
Il est important de prendre en compte la capacité car :
- Lors de l'ajout d'éléments avec
append, si la longueur du slice dépasse la capacité, une nouvelle array avec une capacité accrue est allouée et les données sont copiées, ce qui influence la performance. - Connaître la capacité permet de gérer efficacement la mémoire et d'éviter des allocations inutiles.
Exemple :
s := make([]int, 0, 5) // longueur 0, capacité 5
fmt.Println(len(s), cap(s)) // 0 5
s = append(s, 1, 2, 3, 4, 5)
fmt.Println(len(s), cap(s)) // 5 5
s = append(s, 6) // capacité dépassée, une nouvelle array est allouée
fmt.Println(len(s), cap(s)) // 6 10 (environ)
Ainsi, en contrôlant la capacité, on peut optimiser le travail avec les slices.