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).