Heim >Backend-Entwicklung >Golang >Wie kann ich effizient zwischen Go-Strukturen mit identischen Mitgliedern, aber unterschiedlichen Typen konvertieren?
Konvertieren von Strukturen mit identischen Mitgliedern, aber unterschiedlichen Typen
In Go kann es vorkommen, dass Sie zwei Strukturen mit identischen Mitgliedern, aber unterschiedlichen Typen haben . Dies kann eine Herausforderung darstellen, wenn Sie die Werte von einer Struktur in eine andere kopieren müssen.
Beispielanwendungsfall
Betrachten Sie das folgende Beispiel:
type Common struct { Gender int From string To string } type Foo struct { Id string Name string Extra Common } type Bar struct { Id string Name string Extra Common }
Angenommen, Sie haben eine Variable foo vom Typ Foo und möchten ihre Werte in eine Variable bar vom Typ kopieren Bar.
Konvertierungsansatz
Da die zugrunde liegenden Typen von Foo und Bar bis auf Struktur-Tags identisch sind, können Sie eine Typkonvertierung verwenden, um die Werte zu kopieren. So können Sie es machen:
foo := Foo{Id: "123", Name: "Joe"} bar := Bar(foo)
Im obigen Code wandelt die Konvertierung Bar(foo) den Wert von foo explizit vom Typ Foo in Bar um. Dies ist möglich, weil die zugrunde liegenden Typen identisch sind.
Playground-Beispiel
<br>Pakethauptteil</p> <p>import „fmt“</p> <p>Typ Gemeinsame Struktur {</p> <pre class="brush:php;toolbar:false">Gender int From string To string
}
Typ Foo-Struktur {
Id string Name string Extra Common
}
Typ Bar-Struktur {
Id string Name string Extra Common
}
func main() {
foo := Foo{Id: "123", Name: "Joe"} bar := Bar(foo) fmt.Println(bar)
}
Ausgabe
{123 Joe {0 "" ""}}
Wie Sie sehen können, sind die Werte von foo wurden erfolgreich kopiert bar.
Hinweis:
Der Konvertierungsansatz funktioniert nur, wenn die zugrunde liegenden Typen der Strukturen bis auf Struktur-Tags identisch sind. Wenn die zugrunde liegenden Typen unterschiedlich sind, müssen Sie die Werte Element für Element manuell kopieren.
Das obige ist der detaillierte Inhalt vonWie kann ich effizient zwischen Go-Strukturen mit identischen Mitgliedern, aber unterschiedlichen Typen konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!