Sobes.tech
Junior — Middle

Mi történik a szelet hosszával és kapacitásával, ha hozzáadunk 10 elemet, amikor eredetileg üres?

sobes.tech MI

Válasz az MI-től

Ha van egy üres szelet a Go-ban (hossz és kapacitás 0), és hozzáad 10 elemet az append függvénnyel, akkor:

  • A szelet hossza 10 lesz — a hozzáadott elemek száma.
  • A szelet kapacitása automatikusan növekedni fog, általában egy tartalékkal, hogy elkerülje a gyakori memória újraelosztásokat. A pontos kapacitás az implementációtól függ, de gyakran 16 vagy több lesz, hogy befogadja az új elemeket és tartalékot biztosítson a jövőbeni hozzáadásokhoz.

Példa:

var s []int // üres szelet
s = append(s, make([]int, 10)...) // 10 elem hozzáadása
fmt.Println(len(s)) // 10
fmt.Println(cap(s)) // >=10, általában 16 vagy 20

Így a kapacitás dinamikusan növekszik, hogy hatékonyan kezelje a memóriát a szelet növekedésével.