Sobes.tech
Middle

Hogyan nő a szelet kapacitása bővítéskor?

sobes.tech MI

Válasz az MI-től

Go-ban egy szeletnek (slice) van egy belső kapacitása (capacity), amely növekszik a bővítés során. Amikor egy elemet adunk hozzá, és a jelenlegi kapacitás nem elegendő, a szelet egy új tömböt foglal le megnövelt kapacitással, általában körülbelül kétszeresével a jelenlegi kapacitásnak, hogy minimalizálja az allokációk számát.

Például, ha egy szelet kapacitása=4, az ötödik elem hozzáadásakor egy új tömb jön létre kapacitással=8, és az adatokat oda másolják. Ez az amortizált növekedés hatékonyan kezeli a memóriát és a teljesítményt.

Példa:

s := make([]int, 0, 4)
for i := 0; i < 10; i++ {
    s = append(s, i)
    fmt.Printf("len=%d cap=%d\n", len(s), cap(s))
}

A kimenet megmutatja, hogy a kapacitás körülbelül megkétszereződik, amikor szükséges.