Maison >développement back-end >Golang >Comment modifier les valeurs d'origine lors des itérations de plage dans Go ?

Comment modifier les valeurs d'origine lors des itérations de plage dans Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-30 12:34:14589parcourir

How to Modify Original Values During Range Iterations in Go?

Adressage des valeurs dans les itérations de plage

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.

Solution

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn