給出以下程式碼片段:
type foo struct {} func bar(baz interface{}) {}
其中foo 和bar 在設計上都是不可變的,如何將&foo{} 結構體指標轉換為interface{} 值,然後將其用作bar 的參數函數?
將結構體指標轉換為interface{}值很簡單:
f := &foo{} bar(f) // Every type implements interface{}, so no special action is required.
從interface{}值恢復原始的*foo指標需要型別斷言或類型開關。
型別斷言:
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. }
型切換:
func bar(baz interface{}) { switch f := baz.(type) { case *foo: // f is of type *foo. default: // f is some other type. } }
以上是如何在 Go 中將結構體指標轉換為 interface{} 值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!