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