次のコード スニペットがあるとします:
type foo struct {} func bar(baz interface{}) {}
ここで、foo と bar は両方とも設計により不変です&foo{} 構造体ポインタをインターフェース値に変換し、その後それをパラメータとして利用するにはどうすればよいですか。{} bar 関数について?
インターフェイス{}値への構造体ポインタのキャストは簡単です:
f := &foo{} bar(f) // Every type implements interface{}, so no special action is required.
インターフェイスから元の *foo ポインタを復元{ } 値には、型アサーションまたは型スイッチのいずれかが必要です。
Typeアサーション:
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 中国語 Web サイトの他の関連記事を参照してください。