Sobes.tech
Junior — Middle

Milyen helyzetekben történik automatikus növekedés a dinamik tömb (slice) méretében a programozási nyelvben?

sobes.tech MI

Válasz az MI-től

Go nyelvben a slice egy olyan szerkezet, amely egy mutatót tartalmaz egy tömbre, egy hosszúságot és egy kapacitást. A slice mérete automatikusan növekszik, amikor append függvénnyel elemeket adunk hozzá, és a jelenlegi hossz eléri a kapacitást.

Ebben a pillanatban egy új tömb kerül lefoglalásra, amely általában kétszer akkora, mint az előző, a régi elemek másolódnak az új tömbbe, és a slice mutatója frissül az új tömbre. Ez lehetővé teszi, hogy a slice dinamikusan növekedjen az elemek hozzáadásával.

Példa:

s := make([]int, 0, 2) // hossz 0, kapacitás 2
s = append(s, 1)        // hossz 1, kapacitás 2
s = append(s, 2)        // hossz 2, kapacitás 2
s = append(s, 3)        // hossz 3, a kapacitás megnövekedett, például 4-re

Így a méret automatikusan növekszik, amikor elemeket adunk hozzá, és a hossz eléri a slice kapacitását.