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
}