Sobes.tech
Junior — Middle

Em que lugar da memória um slice é criado em Go?

sobes.tech IA

Resposta da IA

Em Go, um slice é uma estrutura que contém um ponteiro para um array, um comprimento e uma capacidade. O próprio slice (uma estrutura com esses três campos) geralmente é criado na pilha se for local, ou no heap se fizer parte de uma estrutura mais complexa ou for retornado de uma função.

No entanto, os dados aos quais o slice faz referência (ou seja, o próprio array) estão sempre no heap se forem alocados dinamicamente, ou na memória estática se for um array de tamanho fixo.

Por exemplo:

func exemplo() []int {
    arr := []int{1, 2, 3}
    return arr
}

Aqui, arr é um slice, cuja estrutura pode estar na pilha, mas o array com os elementos está no heap para que os dados persistam após a saída da função.

Assim, um slice é uma pequena estrutura na memória (geralmente na pilha) que aponta para um array no heap.