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