Heim > Backend-Entwicklung > Golang > Wie kann ich Daten effizient zwischen Go-Strukturen mit identischen Mitgliedern, aber unterschiedlichen Typen übertragen?

Wie kann ich Daten effizient zwischen Go-Strukturen mit identischen Mitgliedern, aber unterschiedlichen Typen übertragen?

Patricia Arquette
Freigeben: 2024-12-10 02:18:13
Original
519 Leute haben es durchsucht

How Can I Efficiently Transfer Data Between Go Structs with Identical Members but Different Types?

Strukturen mit identischen Mitgliedern und Variantentypen kopieren

In Go ist es nicht ungewöhnlich, Strukturen mit identischen Mitgliedern, aber unterschiedlichen Typen zu haben. 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
}
Nach dem Login kopieren

Wie können wir bei einer Instanz von Foo and Bar Daten von einem zum anderen übertragen?

Lösung: Konvertierung

Da die zugrunde liegenden Typen von Foo und Bar bis auf Struktur-Tags identisch sind, bietet Go eine einfache Lösung: Konvertierung. Durch die Konvertierung des Foo-Werts in den Typ Bar überschreiben wir effektiv die vorhandenen Daten in Bar. Hier ist der Code:

foo := Foo{Id: "123", Name: "Joe"}
bar := Bar(foo)
Nach dem Login kopieren

Beispiel

Testen wir die Konvertierung in einem Spielplatzbeispiel: https://go.dev/play/p/1W3EXQVXVhS.

Einschränkungen

Es ist zu beachten, dass die Konvertierung nur funktioniert, wenn die zugrunde liegenden Typen mit Ausnahme von struct identisch sind Tags. Sollten sich die zugrunde liegenden Typen erheblich unterscheiden, wäre die Erstellung einer eigenen Kopierfunktion erforderlich.

Das obige ist der detaillierte Inhalt vonWie kann ich Daten effizient zwischen Go-Strukturen mit identischen Mitgliedern, aber unterschiedlichen Typen übertragen?. 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