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