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