Avatar ·

Modification des éléments d'un slice pendant l'itération en Go : pourquoi ça ne marche pas et comment corriger ?

Bonjour à tous ! Je viens de commencer à apprendre Go et je suis tombé sur un comportement étrange lors de l'itération sur un slice. J'ai un code simple où je veux doubler chaque élément d'un slice d'entiers : ```go package main import "fmt" func main() { nums := []int{1, 2, 3, 4, 5} for _, val := range nums { val = val * 2 } fmt.Println(nums) // J'attends : [2, 4, 6, 8, 10], mais j'obtiens : [1, 2, 3, 4, 5] } ``` Je m'attendais à ce que les valeurs du slice soient modifiées après la boucle, mais elles sont restées inchangées. J'ai vérifié — le compilateur ne donne pas d'erreur, le code s'exécute, mais le résultat n'est pas celui attendu. Pourquoi cela se produit-il ? Je pensais que `val` était une référence à l'élément du slice, mais il semble que ce ne soit pas le cas. Comment modifier correctement les éléments d'un slice pendant l'itération ? Existe-t-il d'autres méthodes que d'utiliser l'index ? Merci d'avance pour votre aide ! <<>>

Problème : copie de la valeur lors de l'itération

En Go, lorsqu'on utilise la construction for range, la variable val