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" } }
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!