Sobes.tech
Middle+

Z čoho sa skladá slice, aká je jeho vnútorná štruktúra?

sobes.tech AI

Odpoveď od AI

V Go je slice štruktúra, ktorá obsahuje tri hlavné polia:

  1. Ukazovateľ na pole — adresa prvého prvku slice v internom poli.
  2. Dĺžka (len) — počet dostupných prvkov v slice.
  3. Kapacita (cap) — maximálny počet prvkov, ktoré môžu byť uložené, začínajúc od ukazovateľa, bez pridelenia novej pamäte.

Vnútri nie je slice polem, ale iba "oknom" na časť poľa. Pri zmene slice (napríklad pridávaním prvkov pomocou append), ak dĺžka presiahne kapacitu, je vytvorený nový pole a údaje sa skopírujú tam.

Príklad štruktúry slice (zjednodušený):

type SliceHeader struct {
    Data uintptr // ukazovateľ na prvý prvok poľa
    Len  int     // dĺžka slice
    Cap  int     // kapacita slice
}

Toto umožňuje efektívnu prácu s dynamickými sekvenciami bez kopírovania údajov pri orezávaní.