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

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

Patricia Arquette
Freigeben: 2024-12-13 16:19:10
Original
122 Leute haben es durchsucht

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

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
}
Nach dem Login kopieren

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)
Nach dem Login kopieren

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>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">Gender int
From   string
To     string
Nach dem Login kopieren

}

Typ Foo-Struktur {

Id    string
Name  string
Extra Common
Nach dem Login kopieren
Nach dem Login kopieren

}

Typ Bar-Struktur {

Id    string
Name  string
Extra Common
Nach dem Login kopieren
Nach dem Login kopieren

}

func main() {

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

fmt.Println(bar)
Nach dem Login kopieren

}

Ausgabe

{123 Joe {0 "" ""}}
Nach dem Login kopieren

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!

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 Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage