Sobes.tech
Junior — Middle

Qual é o número máximo de elementos que podem ser adicionados usando o método append a um slice passado sem causar erros ou alterações nos dados originais?

sobes.tech IA

Resposta da IA

Em Go, o método append adiciona elementos a um slice, e se a capacidade (capacity) do slice original permitir, a adição ocorre sem alocação de nova memória e sem alterar o array original. A quantidade máxima de elementos que pode ser adicionada sem realocação de memória é a diferença entre a capacidade do slice e seu comprimento atual.

Por exemplo, se um slice s tem comprimento 3 e capacidade 5, é possível adicionar no máximo 2 elementos sem alocar nova memória.

s := make([]int, 3, 5) // comprimento 3, capacidade 5
s = append(s, 1, 2)     // adiciona 2 elementos

Se adicionar mais elementos do que o espaço disponível na capacidade, o Go criará um novo array, copiará os dados e retornará um novo slice — o array original permanecerá inalterado, mas o slice apontará para um novo array.

Portanto, a quantidade máxima de elementos que podem ser adicionados sem erros e sem modificar os dados originais é cap(s) - len(s).