Sobes.tech
Junior — Middle

Mi a különbség a tömb hosszúság és kapacitás paraméterei között a programozásban?

sobes.tech MI

Válasz az MI-től

Go-ban a tömböknek fix hosszúságuk van, amelyet a létrehozásukkor határoznak meg, és nem változtatható meg. A hossz (length) paraméter a tömbben lévő elemek számát jelenti, és ez fix.

A kapacitás (capacity) az a számú elem, amit egy tömb vagy szelet (slice) anélkül tud befogadni, hogy további memóriát foglalna le. A tömbök esetében a kapacitás megegyezik a hosszával, mivel azok fixek. A szeletek esetében a kapacitás lehet nagyobb a hosszánál, mivel a szeletek dinamikus struktúrák, amelyek bővíthetők.

Példa:

arr := [5]int{1, 2, 3, 4, 5} // hossz és kapacitás 5

slice := arr[1:3]             // a szelet hosszúsága 2 (az indexek 1 és 2)
// a szelet kapacitása 4 (az 1-es indextől a tömb végéig)

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

Így a hossz a jelenlegi méret (az elemek száma), míg a kapacitás a maximális méret anélkül, hogy újra kellene osztani a memóriát.