Sobes.tech
Middle+

Tâche : Que va afficher le code ? ```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

Réponse de l'IA

Code:

package main

import "fmt"

func main() {
    a := []int{1, 2, 3, 4, 5}
    b := a[:2]       // b fait référence aux deux premiers éléments de a : [1, 2]
    b = append(b, 100) // ajoutons 100 à la tranche b
    fmt.Println(a, b)
}

Analyse:

  • Initialement, a = [1, 2, 3, 4, 5]
  • b := a[:2] — la tranche b contient [1, 2], et sa capacité est 5 (de 0 à la fin de a)
  • append(b, 100) ajoute l’élément 100 à la tranche b. Comme la capacité de b permet de s’étendre sans allocation de nouvelle mémoire, l’élément 100 est écrit dans a[2], modifiant le tableau original a.

Après append:

  • a devient [1, 2, 100, 4, 5]
  • b devient [1, 2, 100]

Sortie:

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

Autrement dit, l’élément a[2] est passé de 3 à 100, car b et a partagent un tableau sous-jacent.