Sobes.tech
Junior — Middle

V ktorých situáciách v programovacom jazyku dochádza k automatickému zväčšovaniu veľkosti dynamického poľa (slice)?

sobes.tech AI

Odpoveď od AI

V jazyku Go je rez (slice) štruktúra, ktorá obsahuje ukazovateľ na pole, dĺžku a kapacitu. Veľkosť rezu sa automaticky zväčšuje, keď pridávate prvky pomocou funkcie append, a aktuálna dĺžka rezu dosiahne jeho kapacitu.

V tomto momente sa alokuje nové pole s väčšou kapacitou (zvyčajne dvojnásobnou predchádzajúcej), staré prvky sa skopírujú do nového poľa a ukazovateľ rezu sa aktualizuje na toto nové pole. To umožňuje, aby rez dynamicky rástol s pridávaním prvkov.

Príklad:

s := make([]int, 0, 2) // dĺžka 0, kapacita 2
s = append(s, 1)        // dĺžka 1, kapacita 2
s = append(s, 2)        // dĺžka 2, kapacita 2
s = append(s, 3)        // dĺžka 3, kapacita zvýšená, napríklad na 4

Týmto spôsobom sa veľkosť automaticky zväčšuje pri pridávaní prvkov, keď dĺžka dosiahne kapacitu rezu.