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
Barbara StreisandOriginal
2024-12-11 09:30:11832Durchsuche

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{}.

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
}

Typschalter

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

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!

Stellungnahme:
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