Sobes.tech
Middle+

Tarefa: O que irá mostrar o código? ```go package main import "fmt" func main() { a := []int{1, 2, 3, 4, 5} b := a[:2] b = append(b, 100) fmt.Println(a, b) } ```

sobes.tech IA

Resposta da IA

Código:

package main

import "fmt"

func main() {
    a := []int{1, 2, 3, 4, 5}
    b := a[:2]       // b refere-se aos dois primeiros elementos de a: [1, 2]
    b = append(b, 100) // adiciona 100 ao slice b
    fmt.Println(a, b)
}

Análise:

  • Inicialmente, a = [1, 2, 3, 4, 5]
  • b := a[:2] — o slice b contém [1, 2], e sua capacidade é 5 (de 0 até o final de a)
  • append(b, 100) adiciona o elemento 100 ao slice b. Como a capacidade de b permite expandir sem alocar nova memória, o elemento 100 é escrito em a[2], modificando o array original a.

Após o append:

  • a torna-se [1, 2, 100, 4, 5]
  • b torna-se [1, 2, 100]

Saída:

[1 2 100 4 5] [1 2 100]

Ou seja, o elemento a[2] mudou de 3 para 100, pois b e a compartilham um array subjacente.