Cambio de elementos de un slice durante la iteración en Go: por qué no funciona y cómo solucionarlo
¡Hola a todos! Acabo de empezar a estudiar Go y me encontré con un comportamiento extraño al iterar sobre un slice.
Tengo un código simple donde quiero duplicar cada elemento en un slice de enteros:
```go
package main
import "fmt"
func main() {
nums := []int{1, 2, 3, 4, 5}
for _, val := range nums {
val = val * 2
}
fmt.Println(nums) // Espero: [2, 4, 6, 8, 10], pero obtengo: [1, 2, 3, 4, 5]
}
```
Esperaba que después del ciclo los valores en el slice cambiaran, pero permanecieron iguales. Verifiqué: el compilador no da errores, el código se ejecuta, pero el resultado no es el esperado.
¿Por qué sucede esto? Pensé que `val` era una referencia al elemento del slice, pero parece que no es así. ¿Cómo cambiar correctamente los elementos de un slice durante la iteración? ¿Hay otras formas además de usar el índice?
¡Gracias de antemano por la ayuda!
<<>>
Problema: copia del valor durante la iteración
En Go, al usar la construcción for range, la variable val