Junior — Middle
Prečo je dôležité brať do úvahy kapacitu slices pri práci s poľami v Go?
sobes.tech AI
Odpoveď od AI
V Go sú slices dynamické štruktúry, ktoré obsahujú ukazovateľ na pole, dĺžku a kapacitu. Kapacita slice-u určuje, koľko prvkov môže obsahovať bez pridelenia novej pamäti.
Je dôležité brať do úvahy kapacitu, pretože:
- Pri pridávaní prvkov pomocou
append, ak dĺžka slice-u presiahne kapacitu, je pridelený nový pole s väčšou kapacitou a údaje sú skopírované, čo ovplyvňuje výkon. - Znalosť kapacity umožňuje efektívne spravovať pamäť a vyhýbať sa zbytočným alokáciám.
Príklad:
s := make([]int, 0, 5) // dĺžka 0, kapacita 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) // kapacita bola prekročená, pridelený nový pole
fmt.Println(len(s), cap(s)) // 6 10 (približne)
Ovládaním kapacity možno optimalizovať prácu so slices.