Sobes.tech
Senior

Que va afficher le programme? 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

Réponse de l'IA

Le programme affichera :

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

Explication :

  • Initialement, x est une tranche vide.
  • On ajoute les éléments 0, 1, 2 à x.
  • y := append(x, 3) ajoute 3 à la tranche x. Si la capacité de la tranche est suffisante, y et x pointeront vers le même tableau sous-jacent, mais la longueur de y sera plus grande.
  • z := append(x, 4) ajoute également un élément, mais comme y a déjà modifié le tableau, lors de l'ajout de 4 à z, un nouveau tableau est créé pour éviter d'écraser l'ancien.

Ainsi, y contient [0 1 2 3], et z contient [0 1 2 4].

Exemple pour plus de clarté :

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()
}