Junior — Middle
Ce se întâmplă cu lungimea și capacitatea unui slice dacă îi adaugi 10 elemente, când acesta este inițial gol?
sobes.tech AI
Răspuns de la AI
Dacă aveți un slice gol în Go (lungimea și capacitatea sunt egale cu 0), și adăugați 10 elemente folosind funcția append, atunci:
- Lungimea slice-ului va deveni 10 — numărul de elemente pe care le-ați adăugat.
- Capacitatea slice-ului va fi mărită automat, de obicei cu o marjă, pentru a evita realocări frecvente de memorie. Capacitatea exactă depinde de implementare, dar adesea va fi 16 sau mai mult, pentru a putea conține noile elemente și a avea marjă pentru adăugiri viitoare.
Exemplu:
var s []int // slice gol
s = append(s, make([]int, 10)...) // adaugă 10 elemente
fmt.Println(len(s)) // 10
fmt.Println(cap(s)) // >=10, de obicei 16 sau 20
Astfel, capacitatea crește dinamic pentru a gestiona eficient memoria pe măsură ce slice-ul crește.