Sobes.tech
Senior

Onde estarão localizados o array e o mapa — no monte ou na pilha?

sobes.tech IA

Resposta da IA

Em Go, os arrays geralmente são colocados na pilha se o seu tamanho for conhecido na fase de compilação e não forem demasiado grandes. Isto deve-se ao facto de os arrays serem valores de tamanho fixo. No entanto, se um array for passado como ponteiro ou usado numa estrutura que é alocada no heap, então o array também estará no heap.

Map em Go é um tipo de referência, implementado internamente através de um ponteiro para uma estrutura de dados no heap. Portanto, um map está sempre no heap, mesmo que a variável map seja declarada localmente.

Exemplo:

func exemplo() {
    var arr [10]int       // array na pilha
    m := make(map[int]int) // map no heap
    _ = arr
    _ = m
}