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.