Junior — Middle
Como é que ocorre o aumento do tamanho do slice na linguagem Go?
sobes.tech IA
Resposta da IA
Na linguagem Go, um slice é uma estrutura que contém um ponteiro para um array, um comprimento e uma capacidade. Ao adicionar elementos usando a função append, se o comprimento do slice atingir sua capacidade, a capacidade é aumentada.
O mecanismo de aumento do tamanho do slice não é fixo, mas geralmente o Go dobra a capacidade (multiplica por 2) para minimizar o número de alocações e cópias. Um novo array com capacidade aumentada é criado, no qual os dados antigos são copiados, e o ponteiro do slice é atualizado.
Exemplo:
s := make([]int, 0, 2) // comprimento 0, capacidade 2
s = append(s, 1, 2) // agora comprimento 2, capacidade 2
s = append(s, 3) // a capacidade aumentará, por exemplo, para 4
Assim, o aumento do tamanho do slice ocorre automaticamente ao adicionar elementos, quando a capacidade atual é esgotada.