Sobes.tech
Junior — Middle

Hol jön létre egy slice a memória egyik részén a Go-ban?

sobes.tech MI

Válasz az MI-től

Go nyelvben a slice egy olyan szerkezet, amely egy mutatót tartalmaz egy tömbre, egy hosszúságot és egy kapacitást. A slice (amely három mezőt tartalmazó szerkezet) általában a veremben jön létre, ha helyi, vagy a halomban, ha egy összetettebb struktúra része vagy egy függvényből tér vissza.

Azonban a slice által hivatkozott adatok (azaz maga a tömb) mindig a halomban találhatók, ha dinamikusan vannak lefoglalva, vagy statikus memóriában, ha egy fix méretű tömb.

Például:

func példa() []int {
    arr := []int{1, 2, 3}
    return arr
}

Itt az arr egy slice, szerkezete a veremben lehet, de az elemeket tartalmazó tömb a halomban van, hogy az adatok a függvény kilépése után is megmaradjanak.

Ezért a slice egy kis szerkezet a memóriában (általában a veremben), amely egy halomban lévő tömbre mutat.