ホームページ >バックエンド開発 >Golang >Go Generics: `Props[Example]` を `Props[Generic]` に代入できないのはなぜですか?

Go Generics: `Props[Example]` を `Props[Generic]` に代入できないのはなぜですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-28 16:47:13312ブラウズ

Go Generics: Why Can't I Assign `Props[Example]` to `Props[Generic]`?

ジェネリック型引数の不一致: 代入が失敗する理由

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。