Sobes.tech
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.