Sobes.tech
Junior — Middle

De ce este important să ținem cont de capacitatea slices-urilor atunci când lucrăm cu array-uri în Go?

sobes.tech AI

Răspuns de la AI

În Go, slice-urile sunt structuri dinamice care conțin un pointer către un array, o lungime și o capacitate. Capacitatea slice-ului determină câte elemente poate conține fără alocarea de memorie nouă.

Este important să țineți cont de capacitate deoarece:

  • La adăugarea de elemente cu append, dacă lungimea slice-ului depășește capacitatea, se alocă un nou array cu o capacitate mărită și datele sunt copiate, ceea ce afectează performanța.
  • Cunoașterea capacității permite gestionarea eficientă a memoriei și evitarea alocărilor inutile.

Exemplu:

s := make([]int, 0, 5) // lungime 0, capacitate 5
fmt.Println(len(s), cap(s)) // 0 5

s = append(s, 1, 2, 3, 4, 5)
fmt.Println(len(s), cap(s)) // 5 5

s = append(s, 6) // capacitatea a fost depășită, se alocă un nou array
fmt.Println(len(s), cap(s)) // 6 10 (aproximativ)

Controlând capacitatea, se poate optimiza lucrul cu slice-urile.