將結構指標轉換為介面
考慮以下場景:
type foo struct{} func bar(baz interface{}) {}
假設foo 和bar 是不可變的並且baz 必須恢復為bar 中的foo 結構體指針,問題就出現了:如何您可以將&foo{} 轉換為 interface{} 用作 bar 中的參數嗎?
解
將 &foo{} 轉換為 interface{} 很簡單:
f := &foo{} bar(f) // Every type implements interface{}. No special action is needed.
要回到*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 中安全地將結構體指標轉換為介面並返回?的詳細內容。更多資訊請關注PHP中文網其他相關文章!