Sobes.tech
Senior

Kde budou umístěny pole a mapa — na haldě nebo na zásobníku?

sobes.tech AI

Odpověď od AI

V Go jsou pole obvykle umístěny na zásobníku, pokud jejich velikost je známa v době kompilace a nejsou příliš velká. To je způsobeno tím, že pole jsou hodnoty pevné velikosti. Nicméně, pokud je pole předáno jako ukazatel nebo je použito ve struktuře alokované na haldě, pak bude i toto pole na haldě.

Map v Go je odkazový typ, interně implementovaný pomocí ukazatele na datovou strukturu na haldě. Proto je mapa vždy umístěna na haldě, i když je proměnná mapa deklarována lokálně.

Příklad:

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