Sobes.tech
Junior — Middle

Milyen adatok tárolódnak a szelet szerkezetén belüli mutatóban?

sobes.tech MI

Válasz az MI-től

A Go nyelvben egy szelet (slice) szerkezetében három fő mező van:

  1. Mutató (pointer) — a tömb első elemének címe, amelyre a szelet hivatkozik. Ez nem feltétlenül a teljes tömb kezdete, hanem a szelet kezdete a tömbön belül.

  2. Hossz (length) — a szelet által elérhető elemek száma.

  3. Kapacitás (capacity) — a maximális elem szám, amit a mutatótól kezdve el lehet helyezni anélkül, hogy új memóriát foglalnánk.

Egyszerűsített szelet struktúra példája:

type SliceHeader struct {
    Data uintptr // mutató az első elemre
    Len  int     // szelet hossza
    Cap  int     // szelet kapacitása
}

Így a szeletben lévő mutató az első elemre mutat a fő tömbben, ami lehetővé teszi hatékony munkát almintákkal anélkül, hogy adatokat másolnánk.