Angesichts des folgenden Codeausschnitts:
type foo struct {} func bar(baz interface{}) {}
wobei sowohl foo als auch bar vom Design her unveränderlich sind , wie können Sie einen &foo{}-Strukturzeiger in einen Interface{}-Wert umwandeln und ihn anschließend als Parameter für die Leiste verwenden? Funktion?
Das Umwandeln eines Strukturzeigers in einen Interface{}-Wert ist unkompliziert:
f := &foo{} bar(f) // Every type implements interface{}, so no special action is required.
Das Wiederherstellen des ursprünglichen *foo-Zeigers vom Interface{}-Wert erfordert entweder eine Typzusicherung oder ein Typwechsel.
Typ Behauptung:
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. } }
Das obige ist der detaillierte Inhalt vonWie kann ich einen Strukturzeiger in einen Interface{}-Wert in Go konvertieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!