Junior — Middle
Môžete vysvetliť, ako je implementovaná štruktúra dynamického poľa (slice) v programovacom jazyku?
sobes.tech AI
Odpoveď od AI
V jazyku Go je rez (slice) dynamický poľ, ktorý predstavuje štruktúru s troma hlavnými poľami:
- Ukazovateľ na poľ: rez obsahuje odkaz na základné poľ, kde sú uložené údaje.
- Dĺžka (len): počet prvkov dostupných na čítanie a zápis.
- Kapacita (cap): maximálny počet prvkov, ktorý môže základné poľ obsahovať bez pridelenia novej pamäti.
Keď rez dosiahne svoju kapacitu a je potrebné pridať nový prvok, alokuje sa nové väčšie poľ, existujúce údaje sa skopírujú a ukazovateľ rezu sa aktualizuje.
Príklad:
s := make([]int, 0, 3) // dĺžka 0, kapacita 3
s = append(s, 1, 2, 3) // teraz dĺžka 3
s = append(s, 4) // kapacita bola prekročená, alokuje sa nové poľ
Týmto spôsobom uľahčujú rez práce s dynamickými poľami, skrývajúc detaily správy pamäti.