Maison > développement back-end > Golang > le corps du texte

Pourquoi mes mises à jour de structure ne persistent-elles pas lors de l'utilisation d'une tranche dans Go ?

Linda Hamilton
Libérer: 2024-11-19 05:54:03
original
616 Les gens l'ont consulté

Why Don't My Struct Updates Persist When Using a Slice in Go?

Problème de mise à jour de la structure FTR

Dans Go, lorsque vous travaillez avec des structures et des tranches, il est crucial de comprendre le concept de référencement et de copie.

Considérez le code fourni, dans lequel l'utilisateur tente de mettre à jour les valeurs dans la structure ftr à l'aide d'une boucle. Le débogage révèle que même si les cas de commutation sont exécutés et que des modifications sont apportées à l'élément dans la boucle, ces modifications ne persistent pas en dehors de la boucle.

Le problème vient du fait que lors de l'itération sur la tranche Mod, l'élément obtenu est une copie de l'élément réel dans la tranche. Ainsi, toute modification apportée à cette copie n'affectera pas la valeur d'origine.

Solution

Pour résoudre ce problème, il est recommandé de modifier le code comme indiqué ci-dessous :

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

Dans cette version modifiée, au lieu d'itérer sur les pointeurs vers des éléments, nous parcourons les indices dans la tranche et modifions directement les valeurs des éléments dans la tranche. Cela garantit que les modifications apportées dans la boucle sont reflétées dans la structure ftr d'origine.

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