Sobes.tech
Senior

O que o programa irá mostrar? func a() { x := []int{} x = append(x, 0) x = append(x, 1) x = append(x, 2) y := append(x, 3) z := append(x, 4) fmt.Println(y, z) } func main() { a() }

sobes.tech IA

Resposta da IA

O programa irá mostrar:

[0 1 2 3] [0 1 2 4]

Explicação:

  • Inicialmente, x é um slice vazio.
  • São adicionados os elementos 0, 1, 2 a x.
  • y := append(x, 3) adiciona 3 ao slice x. Se a capacidade do slice for suficiente, y e x apontarão para o mesmo array subjacente, mas o comprimento de y será maior.
  • z := append(x, 4) também adiciona um elemento, mas como y já modificou o array, ao adicionar 4 a z, um novo array é criado para evitar sobrescrever o anterior.

Assim, y contém [0 1 2 3], e z contém [0 1 2 4].

Exemplo para maior clareza:

func a() {
    x := []int{}
    x = append(x, 0)
    x = append(x, 1)
    x = append(x, 2)
    y := append(x, 3)
    z := append(x, 4)
    fmt.Println(y, z)
}

func main() {
    a()
}