Sobes.tech
Junior — Middle

Aký je rozdiel medzi parametrami dĺžky a kapacity poľa v programovaní?

sobes.tech AI

Odpoveď od AI

V jazyku Go majú polia pevne stanovenú dĺžku, ktorá sa určuje pri ich vytvorení a nemôže sa meniť. Parameter dĺžka (length) poľa je počet prvkov, ktoré obsahuje, a je pevný.

Kapacita (capacity) je počet prvkov, ktoré pole alebo rez (slice) môže obsahovať bez pridelenia ďalšej pamäte. Pre polia je kapacita rovná dĺžke, pretože sú pevné. Pre rezy môže byť kapacita väčšia ako dĺžka, pretože rezy sú dynamické štruktúry, ktoré sa môžu rozširovať.

Príklad:

arr := [5]int{1, 2, 3, 4, 5} // dĺžka a kapacita sú 5

slice := arr[1:3]             // dĺžka rezu 2 (prvky s indexmi 1 a 2)
// kapacita rezu 4 (od indexu 1 do konca poľa)

fmt.Println(len(slice)) // 2
fmt.Println(cap(slice)) // 4

Takže, dĺžka je aktuálna veľkosť (počet prvkov), a kapacita je maximálna veľkosť bez presunu pamäte.