Maison > développement back-end > Golang > Pourquoi la modification d'une structure dans une boucle Go Range ne modifie-t-elle pas la tranche d'origine ?

Pourquoi la modification d'une structure dans une boucle Go Range ne modifie-t-elle pas la tranche d'origine ?

Mary-Kate Olsen
Libérer: 2024-12-25 08:38:11
original
409 Les gens l'ont consulté

Why Doesn't Modifying a Struct in a Go Range Loop Change the Original Slice?

Pourquoi ne puis-je pas modifier les valeurs dans une plage de structure de type ?

La spécification du langage de programmation Go indique que pour les instructions avec un clause range, "pour chaque entrée, il attribue des valeurs d'itération aux variables d'itération correspondantes si elles sont présentes, puis exécute le bloc."

Dans ce cas, vous parcourez un tranche de structures à l’aide de l’instruction range. Lorsque vous modifiez un champ d'une structure dans la plage, vous modifiez uniquement la variable d'itération, pas la structure sous-jacente dans la tranche.

Pour modifier la structure sous-jacente, vous devez y accéder directement en utilisant l'index de la variable d'itération.

Par exemple, le code suivant modifie correctement les valeurs dans la tranche :

for i, elem := range chartRecords {
    elem.Count = modMe(mod, i)
    chartRecords[i] = elem
    fmt.Printf("No: %2d | Count: %2d | Name = %s\r\n", i, elem.Count, elem.Name)
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal