Lors d'une itération sur une plage de valeurs, il est courant de vouloir modifier les valeurs d'origine plutôt que de simplement travailler avec des copies. Cependant, par défaut, la construction range renvoie une copie de chaque valeur.
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("--") } }
Dans le code ci-dessus, le champ "field" de chaque élément du tableau n'est pas modifié car la plage copie la valeur dans la variable e.
Pour modifier les valeurs d'origine, vous ne pouvez pas utiliser la construction range pour parcourir les valeurs. Au lieu de cela, vous devez utiliser l'index du tableau.
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("--") } }
En utilisant l'index du tableau, vous accédez directement aux valeurs d'origine du tableau et pouvez les modifier si nécessaire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!