„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie konvertiert man eine Struktur in Go: Einbetten, manuelles Kopieren oder explizite Konvertierung?

Wie konvertiert man eine Struktur in Go: Einbetten, manuelles Kopieren oder explizite Konvertierung?

Veröffentlicht am 09.11.2024
Durchsuche:260

How to Convert a Struct in Go: Embedding, Manual Copying, or Explicit Conversion?

Strukturkonvertierung in Go

Betrachten Sie die folgenden zwei Strukturen:

type A struct {
    a int
    b string
}

type B struct {
    A
    c string
}

Angenommen, Sie haben eine Variable vom Typ A und möchten sie in Typ B konvertieren. Ist dies in Go möglich oder müssen Sie Felder manuell kopieren oder eine explizite Konvertierungsmethode erstellen?

Methode 1: Zuweisung eingebetteter Strukturen

Wie Sie in Ihrer Frage erwähnt haben, kann die Einbettung für diesen Zweck verwendet werden. Durch die Einbettung von A in B können Sie eine Variable vom Typ A in den Typ B konvertieren, indem Sie sie einfach dem eingebetteten Feld zuweisen. Zum Beispiel:

func main() {
    structA := A{a: 42, b: "foo"}
    structB := B{A: structA} // Embed structA into structB
}

Dieser Ansatz erstellt eine neue Instanz von B, die die Daten von A in ihrem eingebetteten Feld enthält.

Methode 2: Manuelles Feldkopieren

Alternativ können Sie die Felder manuell wie folgt von A nach B kopieren:

func main() {
    structA := A{a: 42, b: "foo"}
    structB := B{
        A: structA, // Copy fields from structA
        c: "bar",
    }
}

Diese Methode beinhaltet das Erstellen einer neuen Instanz von B und das manuelle Zuweisen der Felder von A.

Methode 3: Explizite Konvertierungsmethode

Eine weitere Option besteht darin, eine explizite Konvertierungsmethode zu erstellen, die A in B konvertiert. Dies kann nützlich sein, wenn Sie über eine komplexe Konvertierungslogik verfügen. Dieser Ansatz ist in diesem Fall jedoch nicht erforderlich, da die oben genannten Methoden eine einfache Möglichkeit bieten, die gewünschte Konvertierung zu erreichen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3