Sobes.tech
Junior — Middle

Ai putea să explici cum este implementată structura unui array dinamic (slice) într-un limbaj de programare?

sobes.tech AI

Răspuns de la AI

În limbajul Go, un slice este un array dinamic care reprezintă o structură cu trei câmpuri principale:

  • Pointer către array: slice-ul conține o referință la array-ul de bază în care sunt stocate datele.
  • Lungime (len): numărul de elemente disponibile pentru citire și scriere.
  • Capacitate (cap): numărul maxim de elemente pe care îl poate conține array-ul de bază fără alocare suplimentară.

Când un slice atinge capacitatea sa și trebuie adăugat un element nou, se alocă un array nou, mai mare, se copiază datele existente și se actualizează pointerul slice-ului.

Exemplu:

s := make([]int, 0, 3) // lungime 0, capacitate 3
s = append(s, 1, 2, 3)  // acum lungime 3
s = append(s, 4)        // capacitatea a fost depășită, se alocă un nou array

Astfel, slice-urile facilitează lucrul cu array-uri dinamice, ascunzând detaliile gestionării memoriei.