Junior — Middle
Que tipos na linguagem Go contêm dentro de si um ponteiro para um segmento de memória?
sobes.tech IA
Resposta da IA
Na linguagem Go, os seguintes tipos contêm internamente um ponteiro para um segmento de memória:
- Slices (fatias) — a estrutura contém um ponteiro para um array, o comprimento e a capacidade.
- Maps (mapas) — implementados internamente através de ponteiros para uma tabela hash.
- Channels (canais) — contêm um ponteiro para a estrutura interna do canal.
- Interfaces — contêm um ponteiro para a tabela de métodos e um ponteiro para os dados.
Os tipos primitivos (int, float, bool, etc.) e arrays não contêm ponteiros internamente, a menos que explicitamente utilizados ponteiros.
Por exemplo, uma fatia parece assim:
var s []int = []int{1, 2, 3}
// s contém um ponteiro para um array [1,2,3], o comprimento e a capacidade
Isso permite trabalhar de forma eficiente com grandes conjuntos de dados sem cópia.