Heim > Backend-Entwicklung > Golang > Wie ändere ich Originalwerte während Bereichsiterationen in Go?

Wie ändere ich Originalwerte während Bereichsiterationen in Go?

Mary-Kate Olsen
Freigeben: 2024-12-30 12:34:14
Original
573 Leute haben es durchsucht

How to Modify Original Values During Range Iterations in Go?

Adressieren von Werten in Bereichsiterationen

Beim Iterieren über einen Wertebereich möchte man häufig die Originalwerte ändern, anstatt nur mit Kopien zu arbeiten. Standardmäßig gibt das Bereichskonstrukt jedoch eine Kopie jedes Werts zurück.

package main

import "fmt"

type MyType struct {
    field string
}

func main() {
    var array [10]MyType

    for _, e := range array {
        e.field = "foo"
    }

    for _, e := range array {
        fmt.Println(e.field)
        fmt.Println("--")
    }
}
Nach dem Login kopieren

Im obigen Code wird das Feld „Feld“ jedes Elements im Array nicht geändert, da der Bereich den Wert hinein kopiert die e-Variable.

Lösung

Um die ursprünglichen Werte zu ändern, können Sie das Bereichskonstrukt nicht verwenden, um über die Werte zu iterieren. Stattdessen müssen Sie den Array-Index verwenden.

package main

import "fmt"

type MyType struct {
    field string
}

func main() {
    var array [10]MyType

    for idx, _ := range array {
        array[idx].field = "foo"
    }

    for _, e := range array {
        fmt.Println(e.field)
        fmt.Println("--")
    }
}
Nach dem Login kopieren

Durch die Verwendung des Array-Index greifen Sie direkt auf die Originalwerte im Array zu und können diese nach Bedarf ändern.

Das obige ist der detaillierte Inhalt vonWie ändere ich Originalwerte während Bereichsiterationen in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage