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

WBOY
リリース: 2024-02-10 19:21:08
転載
734 人が閲覧しました

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

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

質問の内容

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

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

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

リーリー

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

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

回避策

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

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

リーリー

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

リーリー

出力は次のとおりです:

リーリー

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

関連ラベル:
ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!