Junior — Middle
Pourriez-vous expliquer comment la structure d'un tableau dynamique (slice) est implémentée dans un langage de programmation?
sobes.tech IA
Réponse de l'IA
Dans le langage Go, un slice est un tableau dynamique qui représente une structure avec trois champs principaux :
- Pointeur vers le tableau : le slice contient une référence au tableau de base où sont stockées les données.
- Longueur (len) : le nombre d'éléments accessibles en lecture et écriture.
- Capacité (cap) : le nombre maximum d'éléments que le tableau de base peut contenir sans allocation supplémentaire.
Lorsque le slice atteint sa capacité et qu'il faut ajouter un nouvel élément, une nouvelle mémoire est allouée avec une taille plus grande, les données existantes sont copiées, et le pointeur du slice est mis à jour.
Exemple :
s := make([]int, 0, 3) // longueur 0, capacité 3
s = append(s, 1, 2, 3) // maintenant longueur 3
s = append(s, 4) // capacité dépassée, nouvelle allocation
Ainsi, les slices facilitent la gestion des tableaux dynamiques, en cachant les détails de gestion de la mémoire.