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ément3dans le tableau.appendpeut 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
isreste inchangée.