ループの反復中に構造体内の要素を操作したにもかかわらず、ループの終了時に更新が保持されません。この動作の背後にある理由を理解することは、構造体を正しく操作するために重要です。
構造体スライスを反復処理する場合、ループ変数は要素自体ではなく、元の要素のコピーを参照します。 。したがって、ループ内で行われた変更はコピーにのみ影響し、スライス内の実際の要素には影響しません。
構造体要素を正常に更新するには、次のアプローチを使用できます。
解決策に従う更新されたコード スニペットは次のとおりです。
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" } }
これを採用することで、このアプローチを使用すると、構造体要素は正常に更新され、変更はループ終了後も保持されます。
以上が構造体の更新が Go ループ内に保持されないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。