Sobes.tech
Junior — Middle

O que acontecerá ao comprimento e à capacidade do slice se adicionar 10 elementos a ele, quando inicialmente está vazio?

sobes.tech IA

Resposta da IA

Se tiver um slice vazio em Go (comprimento e capacidade iguais a 0), e adicionar 10 elementos usando a função append, então:

  • O comprimento do slice será 10 — a quantidade de elementos que você adicionou.
  • A capacidade do slice será aumentada automaticamente, geralmente com uma margem, para evitar realocações frequentes de memória. A capacidade exata depende da implementação, mas muitas vezes será 16 ou mais, para acomodar novos elementos e ter margem para futuras adições.

Exemplo:

var s []int // slice vazio
s = append(s, make([]int, 10)...) // adiciona 10 elementos
fmt.Println(len(s)) // 10
fmt.Println(cap(s)) // >=10, geralmente 16 ou 20

Assim, a capacidade aumenta dinamicamente para gerenciar a memória de forma eficiente à medida que o slice cresce.