Auswahl Referenzen statt Werte

Sah ich, dass die Reichweite gibt den Schlüssel und die "Kopie" des Wertes. Gibt es eine Möglichkeit für diesen Bereich zur Rückgabe der Adresse der Artikel? Beispiel

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

http://play.golang.org/p/AFOGG9NGpx

Hier "Feld" nicht verändert, weil Auswahl sendet die Kopie des Feldes
Muss ich zur Verwendung von index-oder gibt es irgendeinen anderen Weg, um den Wert zu ändern?

Vielen Dank für das Lesen.

  • mögliche Duplikate von Ändern Sie die Werte während des Durchlaufs in golang
  • Können Sie verwenden Sie ein array von pointer von MyType?
  • Ja, wenn Sie ein array von Zeigern können Sie die Ergebnisse direkt in das array ohne index, es ist hier ein Beispiel play.golang.org/p/_Vx7ONLDJs
  • range ist in Ordnung, die & es gibt, was Sie schon ins innere der Scheibe. Hier werden Werte vom Typ MyStruct (das ist ein Wert-Typ) befinden sich im inneren der Scheibe. Stattdessen könnten wir die Zeiger von Typ *MyStruct im inneren der Scheibe. Wenn Sie unbedingt brauchen, es zu arbeiten, wie es ist, könnten Sie Indizes verwenden, statt Werte, die von range.
InformationsquelleAutor Epitouille | 2013-11-25
Schreibe einen Kommentar