Heim > Backend-Entwicklung > Golang > Wie kann ich einen Strukturzeiger auf eine Schnittstelle{} und zurück in Go umwandeln?

Wie kann ich einen Strukturzeiger auf eine Schnittstelle{} und zurück in Go umwandeln?

Barbara Streisand
Freigeben: 2024-12-11 09:30:11
Original
882 Leute haben es durchsucht

How Can I Cast a Struct Pointer to an Interface{} and Back in Go?

Umwandeln eines Strukturzeigers in eine Schnittstelle

Da die Struktur foo und die Funktionsleiste unflexible Definitionen haben, sucht diese Frage nach einer Lösung für Konvertieren Sie einen Zeiger auf foo in ein Interface{} zur Verwendung als Parameter in bar. Zusätzlich ist die Konvertierung zurück in einen foo-Strukturzeiger innerhalb von bar erforderlich.

Konvertierung in eine Schnittstelle{}

Um &foo{} in eine Schnittstelle{} zu konvertieren, muss die Der Vorgang ist unkompliziert:

f := &foo{}
bar(f) // Every type implements interface{}.
Nach dem Login kopieren

Konvertierung zurück in *foo

Um das Original *foo von der Schnittstelle{} abzurufen, stehen zwei Methoden zur Verfügung:

Type Assertion

func bar(baz interface{}) {
    f, ok := baz.(*foo)
    if !ok {
        // baz was not of type *foo. The assertion failed.
    }

    // f is of type *foo
}
Nach dem Login kopieren

Typschalter

func bar(baz interface{}) {
    switch f := baz.(type) {
    case *foo: // f is of type *foo
    default: // f is some other type
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich einen Strukturzeiger auf eine Schnittstelle{} und zurück in Go umwandeln?. 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