Sobes.tech
Senior

Waar zullen de array en de map zich bevinden — op de heap of op de stack?

sobes.tech AI

Antwoord van AI

In Go worden arrays meestal op de stack geplaatst als hun grootte bekend is tijdens compilatie en ze niet te groot zijn. Dit komt doordat arrays vaste grootte waarden zijn. Echter, als een array wordt doorgegeven als pointer of wordt gebruikt in een structuur die op de heap wordt toegewezen, dan zal ook de array op de heap liggen.

In Go is een map een referentietype, intern geïmplementeerd via een pointer naar een datastructuur op de heap. Daarom bevindt een map zich altijd op de heap, zelfs als de map-variabele lokaal is gedeclareerd.

Voorbeeld:

func voorbeeld() {
    var arr [10]int       // array op de stack
    m := make(map[int]int) // map op de heap
    _ = arr
    _ = m
}