Heim >Backend-Entwicklung >Golang >Wie kann ich einen Strukturzeiger auf eine Schnittstelle{} und zurück in Go umwandeln?
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!