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.