Sobes.tech
Junior — Middle

Em que situações na linguagem de programação ocorre um aumento automático do tamanho do array dinâmico (slice)?

sobes.tech IA

Resposta da IA

Em Go, um slice é uma estrutura que contém um ponteiro para um array, um comprimento e uma capacidade. O tamanho do slice aumenta automaticamente quando você adiciona elementos usando a função append, e o comprimento atual do slice atinge sua capacidade.

Nesse momento, um novo array com maior capacidade (geralmente o dobro do anterior) é alocado, os elementos antigos são copiados para o novo array e o ponteiro do slice é atualizado para esse novo array. Isso permite que o slice cresça dinamicamente à medida que elementos são adicionados.

Exemplo:

s := make([]int, 0, 2) // comprimento 0, capacidade 2
s = append(s, 1)        // comprimento 1, capacidade 2
s = append(s, 2)        // comprimento 2, capacidade 2
s = append(s, 3)        // comprimento 3, capacidade aumentada, por exemplo, para 4

Dessa forma, o tamanho aumenta automaticamente ao adicionar elementos quando o comprimento atinge a capacidade do slice.