pointers - una - referencias de rango de golang en cambio valores
referencias relativas ejemplos (1)
Vi que el rango devuelve la clave y la "copia" del valor. ¿Hay alguna manera de que ese rango devuelva la dirección del artículo? Ejemplo
package main
import "fmt"
type MyType struct {
field string
}
func main() {
var array [10]MyType
for _, e := range array {
e.field = "foo"
}
for _, e := range array {
fmt.Println(e.field)
fmt.Println("--")
}
}
http://play.golang.org/p/AFOGG9NGpx
Aquí el "campo" no se modifica porque el rango envía la copia del campo. ¿Tengo que usar el índice o hay alguna otra forma de modificar el valor?
Gracias por leer.
La respuesta corta y directa: no, utilice el índice de matriz en lugar del valor
Entonces el código anterior se convierte en:
package main
import "fmt"
type MyType struct {
field string
}
func main() {
var array [10]MyType
for idx, _ := range array {
array[idx].field = "foo"
}
for _, e := range array {
fmt.Println(e.field)
fmt.Println("--")
}
}