Obwohl Elemente innerhalb einer Struktur während Schleifeniterationen manipuliert werden, bleiben die Aktualisierungen beim Verlassen der Schleife nicht bestehen. Für die korrekte Strukturmanipulation ist es von entscheidender Bedeutung, den Grund für dieses Verhalten zu verstehen.
Beim Durchlaufen eines Struktursegments verweist die Schleifenvariable auf eine Kopie des Originalelements und nicht auf das Element selbst . Daher wirken sich alle innerhalb der Schleife vorgenommenen Änderungen nur auf die Kopie und nicht auf das eigentliche Element im Slice aus.
Um die Strukturelemente erfolgreich zu aktualisieren, kann der folgende Ansatz verwendet werden:
Hier ist ein aktualisierter Codeausschnitt, der der Lösung folgt:
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" } }
Indem Sie dies übernehmen Ansatz werden die Strukturelemente erfolgreich aktualisiert und die Änderungen bleiben bestehen, nachdem die Schleife beendet wird.
Das obige ist der detaillierte Inhalt vonWarum sind meine Strukturaktualisierungen in einer Go-Schleife nicht dauerhaft?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!