ホームページ  >  記事  >  バックエンド開発  >  構造体アドレスを使用してインターフェイス値を読み取る方法

構造体アドレスを使用してインターフェイス値を読み取る方法

WBOY
WBOY転載
2024-02-10 19:21:08769ブラウズ

構造体アドレスを使用してインターフェイス値を読み取る方法

Go 言語では、インターフェイスは非常に強力で柔軟なタイプです。ただし、インターフェイス値の構造体アドレスを読み取ろうとすると、混乱が生じる可能性があります。では、構造体アドレスを持つインターフェイス値をどのように読み取るのでしょうか?この記事では、この質問に答え、いくつかの実用的なヒントとサンプル コードを提供します。初心者でも経験豊富な Go 開発者でも、この記事は役に立ちます。見てみましょう!

質問の内容

データ型 interface{} の変数があり、それに構造体のアドレスを渡します。インターフェイスからフィールド

を読み取ることができなくなりました

コードは以下のように表示されます:

リーリー

res.data.username を使用するとエラーが発生します

インターフェイスから構造体フィールドを読み取る方法は?

回避策

これを golang と比較してください。なぜ Go 構造体に存在しないフィールドが、その構造体を json にマーシャリングした後も存在するのでしょうか。最初は同じものだと思いました。しかし、そうではないことが判明した。

この質問の場合、res.data には *userdata 型の値があります。したがって、単純な型アサーションで十分です。

リーリー

次のデモは、@mkopriva による 2 つのデモをマージしたもので、違いが示されています:

リーリー

出力は次のとおりです:

リーリー

以上が構造体アドレスを使用してインターフェイス値を読み取る方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。