Senior
Hol lesz az array és a map — a heapen vagy a stacken?
sobes.tech MI
Válasz az MI-től
Go-ban a tömbök általában a veremben helyezkednek el, ha méretük ismert fordítási időben, és nem túl nagyok. Ez azért van, mert a tömbök fix méretű értékek. Azonban, ha a tömb mutatóként kerül átadásra vagy olyan szerkezetben használják, amely a halomra van allokálva, akkor a tömb is a halmon lesz.
A Go-ban a térkép egy hivatkozási típus, amely belülről egy mutatóval van megvalósítva egy halomon lévő adatszerkezetre. Ezért a térkép mindig a halmon helyezkedik el, még akkor is, ha a térkép változó helyben van deklarálva.
Példa:
func példa() {
var arr [10]int // verembeli tömb
m := make(map[int]int) // halmon lévő térkép
_ = arr
_ = m
}