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.