Sobes.tech
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.