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.