Sobes.tech
Junior — Middle

Poderia explicar como é implementada a estrutura de um array dinâmico (slice) numa linguagem de programação?

sobes.tech IA

Resposta da IA

No linguagem Go, um slice é um array dinâmico que representa uma estrutura com três campos principais:

  • Ponteiro para o array: o slice contém uma referência ao array base onde os dados são armazenados.
  • Comprimento (len): o número de elementos acessíveis para leitura e escrita.
  • Capacidade (cap): o número máximo de elementos que o array base pode conter sem alocação adicional.

Quando um slice atinge sua capacidade e é necessário adicionar um novo elemento, uma nova memória é alocada com um tamanho maior, os dados existentes são copiados e o ponteiro do slice é atualizado.

Exemplo:

s := make([]int, 0, 3) // comprimento 0, capacidade 3
s = append(s, 1, 2, 3)  // agora comprimento 3
s = append(s, 4)        // capacidade excedida, nova alocação

Dessa forma, os slices facilitam o trabalho com arrays dinâmicos, ocultando detalhes de gerenciamento de memória.