Middle
Como cresce a capacidade do slice ao expandir-se?
sobes.tech IA
Resposta da IA
Em Go, um slice tem uma capacidade interna (capacity) que aumenta ao expandir. Quando um elemento é adicionado e a capacidade atual não é suficiente, o slice aloca um novo array com uma capacidade aumentada, geralmente aproximadamente o dobro da capacidade atual, para minimizar o número de alocações.
Por exemplo, se um slice tem capacity=4, ao adicionar o quinto elemento, um novo array com capacity=8 é criado, e os dados são copiados para lá. Esse aumento amortizado permite gerenciar a memória e o desempenho de forma eficiente.
Exemplo:
s := make([]int, 0, 4)
for i := 0; i < 10; i++ {
s = append(s, i)
fmt.Printf("len=%d cap=%d\n", len(s), cap(s))
}
A saída mostrará como a capacidade aumenta aproximadamente ao dobro quando necessário.