Heim >Backend-Entwicklung >Golang >Wie konvertiere ich einen *foo-Zeiger in interface{} und zurück in Go?

Wie konvertiere ich einen *foo-Zeiger in interface{} und zurück in Go?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-02 16:23:12710Durchsuche

How Do I Convert a *foo Pointer to interface{} and Back in Go?

Konvertieren von Strukturzeigern in eine Schnittstelle{}

Gegebene unveränderliche Typdeklarationen wie die folgenden:

type foo struct {}

func bar(baz interface{}) {}

Where baz muss innerhalb von bar wieder in einen *foo-Zeiger konvertiert werden. In diesem Artikel wird erläutert, wie &foo{} in eine Schnittstelle{} konvertiert wird. zur Verwendung als Parameter in bar.

Cast &foo Zeiger auf interface{}**

Konvertieren eines *foo-Zeigers in eine Schnittstelle{ } ist unkompliziert:

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

Konvertieren Schnittstelle{} Zurück zu foo*

Um den *foo-Wert von der Schnittstelle{} abzurufen, stehen zwei Ansätze zur Verfügung:

Typzusicherung:

func bar(baz interface{}) {
    f, ok := baz.(*foo)
    if !ok {
        // baz is not a *foo
    }

    // f is a *foo
}

Typ Schalter:

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

Das obige ist der detaillierte Inhalt vonWie konvertiere ich einen *foo-Zeiger in interface{} und zurück in Go?. 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