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