Sobes.tech
Senior

Kde budú umiestnené pole a mapa — na halde alebo na zásobníku?

sobes.tech AI

Odpoveď od AI

V Go sú polia zvyčajne umiestnené na zásobníku, ak je ich veľkosť známa v čase kompilácie a nie sú príliš veľké. To je spôsobené tým, že polia sú hodnoty s pevnou veľkosťou. Avšak, ak je pole odovzdané ako ukazovateľ alebo je použité v štruktúre alokovanej na halde, potom bude aj toto pole na halde.

Map v Go je odkazový typ, interné implementovaný pomocou ukazovateľa na dátovú štruktúru na halde. Preto je mapa vždy umiestnená na halde, aj keď je premenná mapa deklarovaná lokálne.

Príklad:

func príklad() {
    var arr [10]int       // pole na zásobníku
    m := make(map[int]int) // mapa na halde
    _ = arr
    _ = m
}