Go 言語では、インターフェイスは非常に強力で柔軟なタイプです。ただし、インターフェイス値の構造体アドレスを読み取ろうとすると、混乱が生じる可能性があります。では、構造体アドレスを持つインターフェイス値をどのように読み取るのでしょうか?この記事では、この質問に答え、いくつかの実用的なヒントとサンプル コードを提供します。初心者でも経験豊富な Go 開発者でも、この記事は役に立ちます。見てみましょう!
データ型 interface{}
の変数があり、それに構造体のアドレスを渡します。インターフェイスからフィールド
コードは以下のように表示されます:
リーリーres.data.username
を使用するとエラーが発生します
インターフェイスから構造体フィールドを読み取る方法は?
これを golang と比較してください。なぜ Go 構造体に存在しないフィールドが、その構造体を json にマーシャリングした後も存在するのでしょうか。最初は同じものだと思いました。しかし、そうではないことが判明した。
この質問の場合、res.data
には *userdata
型の値があります。したがって、単純な型アサーションで十分です。
次のデモは、@mkopriva による 2 つのデモをマージしたもので、違いが示されています:
リーリー出力は次のとおりです:
リーリー以上が構造体アドレスを使用してインターフェイス値を読み取る方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。