Heim >Backend-Entwicklung >Golang >Wie kann ich einen Strukturzeiger sicher in eine Schnittstelle und zurück in Go konvertieren?
Strukturzeiger in Schnittstelle konvertieren
Stellen Sie sich das folgende Szenario vor:
type foo struct{} func bar(baz interface{}) {}
Angenommen, foo und bar sind unveränderlich und baz auf einen foo-Strukturzeiger in bar wiederhergestellt werden muss, stellt sich die Frage: Wie kann man &foo{} umwandeln? interface{} zur Verwendung als Parameter in bar?
Lösung
Das Umwandeln von &foo{} in interface{} ist unkompliziert:
f := &foo{} bar(f) // Every type implements interface{}. No special action is needed.
Um zu *foo zurückzukehren, können Sie Folgendes ausführen:
Typ Assertion
func bar(baz interface{}) { f, ok := baz.(*foo) if !ok { // The assertion failed because baz was not of type *foo. } // 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 } }
Mit diesen Techniken können Sie Strukturzeiger erfolgreich in Schnittstellen konvertieren und sie wieder in Strukturzeiger wiederherstellen innerhalb von Funktionen.
Das obige ist der detaillierte Inhalt vonWie kann ich einen Strukturzeiger sicher in eine Schnittstelle und zurück in Go konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!