Sobes.tech
Senior

// Question 4. Que s'affichera à l'écran package main import "fmt" func subis(is []int) []int { return append(is, 5) } func main() { is := []int{1, 2, 3, 4} subis(is[2:3]) fmt.Println(is) }

sobes.tech IA

Réponse de l'IA

Dans ce code, une tranche is est créée avec les éléments [1, 2, 3, 4]. Ensuite, la fonction subis est appelée avec l'argument is[2:3], qui est une tranche contenant uniquement l'élément 3.

La fonction subis retourne une nouvelle tranche, obtenue en ajoutant l'élément 5 à la tranche passée. Cependant, le résultat de l'appel à subis n'est enregistré nulle part, donc la tranche is d'origine ne change pas.

La sortie du programme sera :

[1 2 3 4]

Explication :

  • Les tranches en Go sont des structures contenant un pointeur vers un tableau, une longueur et une capacité.
  • is[2:3] crée une nouvelle tranche de longueur 1, pointant vers l'élément 3 dans le tableau.
  • append peut modifier le tableau d'origine s'il y a de la capacité libre, mais comme le résultat n'est pas assigné, les modifications ne sont pas enregistrées.
  • La tranche d'origine is reste inchangée.