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

*foo ポインタをインターフェイスに変換して Go に戻すにはどうすればよいですか?{}

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-02 16:23:12709ブラウズ

How Do I Convert a *foo Pointer to interface{} and Back in Go?

構造体ポインタをインターフェイスに変換する{}

次のような不変型宣言を指定します。

type foo struct {}

func bar(baz interface{}) {}

Where baz bar 内の *foo ポインタに変換し直す必要があるため、この記事では変換方法について説明します。 &foo{} をインターフェイスに追加し、bar のパラメータとして使用します。

キャスト &foo ポインタを インターフェイス{}**

変換インターフェースへの *foo ポインタ{}は簡単:

f := &foo{}
bar(f) // Every type implements interface{}.

インターフェース{}foo*

に変換して *foo 値を取得しますインターフェース{}では、次の 2 つのアプローチが利用可能です:

Typeアサーション:

func bar(baz interface{}) {
    f, ok := baz.(*foo)
    if !ok {
        // baz is not a *foo
    }

    // f is a *foo
}

タイプスイッチ:

func bar(baz interface{}) {
    switch f := baz.(type) {
    case *foo: // f is a *foo
    default: // f is some other type
    }
}

以上が*foo ポインタをインターフェイスに変換して Go に戻すにはどうすればよいですか?{}の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。