ジェネリック型引数の不一致: 代入が失敗する理由
Go で、型 Props[Example] の値を変数に代入しようとしました。 type Props[Generic] はエラーになります。これは、サンプルが Generic インターフェイスを実装しているにもかかわらず、異なる型引数でジェネリック型をインスタンス化すると、個別の名前付き型が生成されるためです。
ジェネリックによる型のインスタンス化
型を指定する場合ジェネリック型の引数では、関数の引数であっても戻り値の型であっても、新しい個別の型がインスタンス化されます。例:
この行は、型引数 Generic を使用して Props をインスタンス化し、Props[Generic] となります。同様に、ExampleProps は型引数 Example でインスタンス化され、Props[Example].
Type Incomparability and Assignment
As Props[Example] および Props[Generic] になります。 2 つの異なる名前付き型であるため、引数として使用される型 (例: Example と Generic) が条件を満たしていても、相互に割り当てることはできません。インターフェイスの実装のような代入条件。
この概念は、any でインスタンス化されたジェネリックスにも同様に適用されます。 any は静的型、interface{} のエイリアスであり、T または特定の型と一致しません。
問題への対処
割り当てエラーを解決するには柔軟性を維持しながら、型パラメータを使用して Props をインスタンス化することを検討してください。
これにより、必要な制約を満たす引数を型指定し、期待どおりに戻り値を使用します。
以上がGo Generics: `Props[Example]` を `Props[Generic]` に代入できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。