ホームページ >バックエンド開発 >Golang >インターフェイス型の配列内の入れ子構造のフィールドにアクセスする方法

インターフェイス型の配列内の入れ子構造のフィールドにアクセスする方法

WBOY
WBOY転載
2024-02-14 09:00:11779ブラウズ

インターフェイス型の配列内の入れ子構造のフィールドにアクセスする方法

php エディター Youzi が、インターフェイス型配列の入れ子構造のフィールドにアクセスする方法を説明します。インターフェイスから返されたデータを処理するときに、入れ子構造、つまり配列にさらに深いフィールドが含まれる構造が発生することがあります。これらのネストされたフィールドにアクセスするには、ドット演算子または配列添字を使用して、レイヤーごとにフィールドを取得します。配列の階層構造と対応するキー名を理解することで、必要なフィールド値に簡単にアクセスし、インターフェイスから返されるデータの柔軟な処理を実現できます。次に、さまざまなデータ処理シナリオに簡単に対処できるようにする、インターフェイス型配列の入れ子構造フィールドの操作方法を詳しく紹介します。

質問内容

これらの入れ子構造の FieldBase フィールドにアクセスしたいと考えています。

これは私のコード例です:

リーリー

配列 x 内の各入れ子構造の FieldBase フィールド値にアクセスする方法を知りたいです。x はインターフェイスの型です。アクセスに型アサーションを使用しようとしましたが、単一の要素でしか試すことができません。

type InterfaceA interface {
    FunA()
}

type BaseStruct struct {
    FieldBase string
}

type SubStruct struct {
    BaseStruct
}

func (c SubStruct) FunA() {
}

type SubStruct2 struct {
    BaseStruct
}

func (c SubStruct2) FunA() {
}

func main() {
    var x = [2]InterfaceA{
        SubStruct{BaseStruct: BaseStruct{FieldBase: "aaa"}},
        SubStruct2{BaseStruct: BaseStruct{FieldBase: "bbb"}},
    }

    // TODO: Access fields of nested classes in the array

}

回避策

配列はインターフェイスに属しているため、各型の型アサーションとハンドル、またはインターフェイス メソッドが必要です。ただし、必要であり、必要なのは、次のように、 FieldBase を公開する各構造体型のインターフェイス メソッドを持つことだと思います。 リーリー

以上がインターフェイス型の配列内の入れ子構造のフィールドにアクセスする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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