Sobes.tech
Junior — Middle

Como inserir um novo elemento na parte central de um array dinâmico (layer)?

sobes.tech IA

Resposta da IA

Em Go, para inserir um novo elemento no meio de um slice, é necessário criar um novo slice combinando as partes antes e depois da posição de inserção, bem como o elemento a inserir. Por exemplo, para inserir o elemento x na posição i do slice s:

s = append(s[:i], append([]T{x}, s[i:]...)...)

Aqui, T é o tipo dos elementos do slice. Este método funciona assim:

  1. Pegamos um segmento desde o início até à posição i (sem incluir i): s[:i]
  2. Criamos um slice com um único elemento x: []T{x}
  3. Pegamos um segmento desde a posição i até ao final: s[i:]
  4. O append interno combina o elemento a inserir e o rabo do slice
  5. O append externo adiciona tudo ao início

Exemplo:

s := []int{1, 2, 4, 5}
x := 3
i := 2
s = append(s[:i], append([]int{x}, s[i:]...)...)
// s agora é: [1 2 3 4 5]

Este é o método padrão para inserir no meio de um slice em Go.