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.