php エディター Xiaoxin は、構造体のインターフェイス タイプ フィールドが設定されているかどうかを判断するためのヒントを共有します。 Go 言語では、構造体型は複数のインターフェイスを実装できるため、interface-type フィールドが設定されているかどうかを判断することで、構造体が特定のインターフェイスを実装しているかどうかを簡単に判断できます。この手法は非常に実用的で、コード内のオブジェクトのタイプを正確に判断し、それに応じて処理できます。続いては具体的な導入方法を見ていきましょう!
構造体が与えられた場合、そのフィールドはインターフェイス タイプに属します:
リーリーこれらのインターフェイスを実装する構造:
リーリーそして、すべてのフィールドを明示的に設定せずに container
インスタンスを作成するコード:
リフレクションを使用して、明示的に設定されていないフィールドを検出するにはどうすればよいでしょうか?
実行時に fieldb の値をチェックすると、vscode は値を nil
として報告します。同様に、c.fieldb.bar() を呼び出そうとすると、nil ポインター逆参照によりパニックが発生します。しかし、リフレクションでは isnil をテストできず、iszero も true を返しません:
type a interface { foo() } type b interface { bar() } type container struct { fielda a fieldb b ... }
フィールドで reflect.typeof(*c)
ではなく reflect.valueof(*c)
を確認する必要があります。
出力:
リーリー以上がstructのinterface-typeフィールドが設定されているかどうかを確認します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。