Maison > développement back-end > Golang > Pourquoi mes mises à jour de structure ne sont-elles pas persistantes dans une boucle Go ?

Pourquoi mes mises à jour de structure ne sont-elles pas persistantes dans une boucle Go ?

DDD
Libérer: 2024-11-15 11:33:02
original
614 Les gens l'ont consulté

Why Aren't My Struct Updates Persistent in a Go Loop?

La valeur de mise à jour dans la structure ne fonctionne pas

Malgré la manipulation des éléments dans une structure pendant les itérations de la boucle, les mises à jour ne parviennent pas à persister à la sortie de la boucle. Comprendre la raison derrière ce comportement est crucial pour une manipulation correcte de la structure.

Le problème

Lors d'une itération sur une tranche de structure, la variable de boucle fait référence à une copie de l'élément d'origine, et non à l'élément lui-même. . Ainsi, toute modification effectuée dans la boucle n'affecte que la copie et non l'élément réel dans la tranche.

La solution

Pour réussir la mise à jour des éléments struct, l'approche suivante peut être utilisée :

  • Itérer sur les indices au lieu de la tranche : En itérant sur les indices, un accès direct à l'élément struct réel est obtenu. Cela permet des modifications qui persistent au-delà de la boucle.
  • Éviter les pointeurs : Les pointeurs vers des tranches ou des éléments sont inutiles lors de la mise à jour des valeurs. La tranche est accessible directement et les éléments peuvent être mis à jour sans avoir besoin de pointeurs.

Voici un extrait de code mis à jour qui suit la solution :

type FTR struct {
    Id       string
    Mod      []Mod
}

type Mod struct {
    Name       string
    Type       string
}

for index := range ftr.Mod {
    switch ftr.Mod[index].Type {
    case "aaa", "bbbb":
        ftr.Mod[index].Type = "cccc"
    case "htr":
        ftr.Mod[index].Type = "com"
    case "no":
        ftr.Mod[index].Type = "jnodejs"
    case "jdb":
        ftr.Mod[index].Type = "tomcat"
    }
}
Copier après la connexion

En adoptant ceci approche, les éléments de la structure seront mis à jour avec succès et les modifications persisteront après la sortie de la boucle.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal