Junior — Middle
Hogyan történik a szelet méretének növelése a Go nyelvben?
sobes.tech MI
Válasz az MI-től
Go nyelven a szelet (slice) egy olyan szerkezet, amely egy mutatót tartalmaz egy tömbre, egy hosszúságot és egy kapacitást. Az append függvény segítségével elemek hozzáadásakor, ha a szelet hossza eléri a kapacitását, akkor a kapacitás növekszik.
A szelet méretének növelési mechanizmusa nem fix, de általában a Go megduplázza a kapacitást (szorozza 2-vel), hogy minimalizálja az allokációk és másolások számát. Egy új tömb jön létre megnövelt kapacitással, amelybe a régi adatok másolódnak, és a szelet mutatója frissül.
Példa:
s := make([]int, 0, 2) // hossz 0, kapacitás 2
s = append(s, 1, 2) // most hossz 2, kapacitás 2
s = append(s, 3) // a kapacitás növekedni fog, például 4-re
Így a szelet méretének növelése automatikusan történik, amikor az aktuális kapacitás kimerül.