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