ホームページ > バックエンド開発 > Golang > 構造体ポインタをインターフェースにキャストして Go に戻すにはどうすればよいですか?{}

構造体ポインタをインターフェースにキャストして Go に戻すにはどうすればよいですか?{}

Barbara Streisand
リリース: 2024-12-11 09:30:11
オリジナル
833 人が閲覧しました

How Can I Cast a Struct Pointer to an Interface{} and Back in Go?

インターフェイスへの構造体ポインターのキャスト

構造体 foo と関数 bar の定義が柔軟性に欠けていることを考慮して、この質問は次の解決策を求めます。 foo へのポインタを bar のパラメータとして使用するインターフェースに変換します。{}さらに、bar 内の foo 構造体ポインタに戻す変換も必要です。

インターフェースへの変換{}

&foo{} をインターフェースに変換するには、{}プロセスは簡単です:

f := &foo{}
bar(f) // Every type implements interface{}.
ログイン後にコピー

Conversion Back *foo

インターフェースから元の *foo を取得するには、次の 2 つのメソッドが利用可能です:

Type Assertion

func bar(baz interface{}) {
    f, ok := baz.(*foo)
    if !ok {
        // baz was not of type *foo. The assertion failed.
    }

    // 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート