Sobes.tech
Junior — Middle

Qual é a diferença entre os parâmetros de comprimento e capacidade de um array na programação?

sobes.tech IA

Resposta da IA

No Go, os arrays têm um comprimento fixo definido na sua criação e que não pode ser alterado. O parâmetro comprimento (length) do array é o número de elementos que ele contém, e é fixo.

A capacidade (capacity) é o número de elementos que um array ou slice pode conter sem alocar memória adicional. Para arrays, a capacidade é igual ao comprimento, pois são fixos. Para slices, a capacidade pode ser maior que o comprimento, pois são estruturas dinâmicas que podem expandir-se.

Exemplo:

arr := [5]int{1, 2, 3, 4, 5} // comprimento e capacidade iguais a 5

slice := arr[1:3]             // comprimento do slice 2 (elementos com índices 1 e 2)
// capacidade do slice 4 (do índice 1 até o final do array)

fmt.Println(len(slice)) // 2
fmt.Println(cap(slice)) // 4

Assim, o comprimento é o tamanho atual (número de elementos), e a capacidade é o tamanho máximo sem redistribuição de memória.