Sobes.tech
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.