Junior — Middle
El tudná magyarázni, hogyan valósul meg egy dinamikus tömb (slice) szerkezete egy programozási nyelvben?
sobes.tech MI
Válasz az MI-től
A Go nyelvben a szelet (slice) egy dinamikus tömb, amely három fő mezővel rendelkező struktúrát képvisel:
- Tömbre mutató mutató: a szelet tartalmaz egy hivatkozást az alapvető tömbre, ahol az adatok tárolódnak.
- Hossz (len): az olvasásra és írásra elérhető elemek száma.
- Kapacitás (cap): a maximális elemszám, amit az alap tömb anélkül tud befogadni, hogy új memóriát foglalnánk.
Amikor a szelet eléri a kapacitását, és új elemet kell hozzáadni, egy nagyobb méretű új tömb kerül lefoglalásra, a meglévő adatok másolódnak, és a szelet mutatója frissül.
Példa:
s := make([]int, 0, 3) // hossz 0, kapacitás 3
s = append(s, 1, 2, 3) // most hossz 3
s = append(s, 4) // a kapacitás túllépése, új tömb foglalása
Így a szeletek megkönnyítik a dinamikus tömbökkel való munkát, elrejtve a memória kezelésének részleteit.