Junior — Middle
În ce situații în limbajul de programare are loc o creștere automată a dimensiunii array-ului dinamic (slice)?
sobes.tech AI
Răspuns de la AI
În Go, un slice este o structură care conține un pointer către un array, o lungime și o capacitate. Dimensiunea slice-ului crește automat atunci când adăugați elemente folosind funcția append, iar lungimea curentă a slice-ului atinge capacitatea sa.
În acel moment, se alocă un nou array cu o capacitate mărită (de obicei de două ori mai mare decât cea anterioară), elementele vechi sunt copiate în noul array și pointerul slice-ului este actualizat către acest nou array. Acest lucru permite slice-ului să crească dinamic pe măsură ce se adaugă elemente.
Exemplu:
s := make([]int, 0, 2) // lungime 0, capacitate 2
s = append(s, 1) // lungime 1, capacitate 2
s = append(s, 2) // lungime 2, capacitate 2
s = append(s, 3) // lungime 3, capacitate crescută, de exemplu, la 4
Astfel, dimensiunea crește automat la adăugarea elementelor, când lungimea atinge capacitatea slice-ului.