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