Heim >Backend-Entwicklung >Golang >Warum werden Strukturwerte während der Iteration in Go nicht aktualisiert?

Warum werden Strukturwerte während der Iteration in Go nicht aktualisiert?

Susan Sarandon
Susan SarandonOriginal
2024-12-09 13:14:15791Durchsuche

Why are Struct Values Not Updated During Iteration in Go?

So aktualisieren Sie Strukturwerte während der Iteration effektiv

In diesem Codeausschnitt haben wir eine Struktur-FTR mit einem Array von Mod-Strukturen. Unser Ziel ist es, das Typfeld von Mod-Elementen basierend auf bestimmten Kriterien innerhalb einer Schleife zu aktualisieren. Es scheint jedoch, dass die innerhalb der Schleife vorgenommenen Änderungen nach Abschluss der Schleife nicht in der FTR-Struktur widergespiegelt werden.

Das Problem

Der Kern des Problems liegt darin die Tatsache, dass Sie beim Durchlaufen eines Slice oder Arrays mit dem Schlüsselwort „range“ nur eine Kopie des Elements erhalten, keinen Verweis auf das ursprüngliche Element. Das bedeutet, dass sich alle Änderungen, die Sie innerhalb der Schleife am Element vornehmen, nur auf die Kopie auswirken und das ursprüngliche Element unverändert lässt.

Lösung: Iterieren mit Indizes

Zur korrekten Vorgehensweise Um die Elemente der Struktur zu aktualisieren, müssen wir ihre Indizes durchlaufen und die ursprünglichen Elemente anstelle ihrer Kopien ändern. Hier ist der korrigierte Code:

type FTR struct {
    Id       string     
    Mod      []Mod  
}

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

}

In diesem aktualisierten Code iterieren wir über die Indizes des Mod-Arrays und ändern das Feld „Typ“ direkt in der ursprünglichen FTR-Struktur. Dadurch stellen wir sicher, dass die innerhalb der Schleife vorgenommenen Änderungen erhalten bleiben, wenn die Schleife abgeschlossen ist.

Das obige ist der detaillierte Inhalt vonWarum werden Strukturwerte während der Iteration in Go nicht aktualisiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn