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.