Junior — Middle
Čo sa stane s dĺžkou a kapacitou rezu, ak do neho pridáte 10 prvkov, keď je pôvodne prázdny?
sobes.tech AI
Odpoveď od AI
Ak máte v Go prázdny rez (dĺžka a kapacita sú 0), a pridáte do neho 10 prvkov pomocou funkcie append, potom:
- Dĺžka rezu bude 10 — počet prvkov, ktoré ste pridali.
- Kapacita rezu sa automaticky zvýši, zvyčajne s rezervou, aby sa predišlo častým presunom pamäte. Presná kapacita závisí od implementácie, ale často bude 16 alebo viac, aby pojala nové prvky a mala rezervu pre budúce pridania.
Príklad:
var s []int // prázdny rez
s = append(s, make([]int, 10)...) // pridanie 10 prvkov
fmt.Println(len(s)) // 10
fmt.Println(cap(s)) // >=10, zvyčajne 16 alebo 20
Týmto spôsobom sa kapacita dynamicky zväčšuje, aby efektívne spravovala pamäť pri raste rezu.