Junior — Middle
Por que é importante considerar a capacidade dos slices ao trabalhar com arrays em Go?
sobes.tech IA
Resposta da IA
Em Go, os slices são estruturas dinâmicas que contêm um ponteiro para um array, um comprimento e uma capacidade. A capacidade do slice determina quantos elementos ele pode conter sem alocar nova memória.
É importante considerar a capacidade porque:
- Ao adicionar elementos com
append, se o comprimento do slice exceder a capacidade, uma nova matriz com maior capacidade é alocada e os dados são copiados, o que afeta o desempenho. - Conhecer a capacidade permite gerenciar a memória de forma eficiente e evitar alocações desnecessárias.
Exemplo:
s := make([]int, 0, 5) // comprimento 0, capacidade 5
fmt.Println(len(s), cap(s)) // 0 5
s = append(s, 1, 2, 3, 4, 5)
fmt.Println(len(s), cap(s)) // 5 5
s = append(s, 6) // capacidade excedida, uma nova matriz é alocada
fmt.Println(len(s), cap(s)) // 6 10 (aproximadamente)
Assim, controlando a capacidade, é possível otimizar o trabalho com slices.