Go · Intermediário · Português · Técnico
capacidade do slice
Quantos elementos o slice comporta no array subjacente antes de precisar realocar. Obtém-se com cap(), enquanto len() dá o tamanho atual.
Onde usar
'make([]T, 0, n)' reserva capacidade para evitar realocações no append. Quando ela estoura, o runtime aloca um array maior e copia os dados.
Em código
s := make([]int, 2, 5)
fmt.Println(len(s), cap(s))
s = append(s, 1, 2, 3)
fmt.Println(len(s), cap(s))
s = append(s, 4)
fmt.Println(len(s), cap(s) > 5)Exemplos
Reserva a capacidade do slice antes do loop, a gente já sabe o tamanho.
Depois do append a capacidade do slice dobrou, o array foi realocado.
Cuidado
Não presuma a taxa de crescimento: ela é detalhe de implementação e já mudou entre versões.
Sinônimos
cap
Antônimos
tamanho do slice