Middle+
Do que é feito um slice, qual é a sua estrutura interna?
sobes.tech IA
Resposta da IA
Em Go, um slice é uma estrutura que contém três campos principais:
- Ponteiro para o array — o endereço do primeiro elemento do slice no array interno.
- Comprimento (len) — o número de elementos disponíveis no slice.
- Capacidade (cap) — o número máximo de elementos que podem ser alojados, começando do ponteiro, sem alocar nova memória.
Internamente, um slice não é um array, mas apenas uma "janela" para uma parte do array. Quando o slice é modificado (por exemplo, adicionando elementos com append), se o comprimento exceder a capacidade, um novo array é criado e os dados são copiados para lá.
Exemplo de estrutura de slice (simplificado):
type SliceHeader struct {
Data uintptr // ponteiro para o primeiro elemento do array
Len int // comprimento do slice
Cap int // capacidade do slice
}
Isso permite trabalhar de forma eficiente com sequências dinâmicas sem copiar dados ao fazer cortes.