ホームページ  >  記事  >  バックエンド開発  >  厳密な制約を持つ型パラメーターを、そのパラメーターを持つ関数に渡しますか?

厳密な制約を持つ型パラメーターを、そのパラメーターを持つ関数に渡しますか?

WBOY
WBOY転載
2024-02-05 23:48:11553ブラウズ

厳密な制約を持つ型パラメーターを、そのパラメーターを持つ関数に渡しますか?

質問の内容

go ジェネリクスを使い始めましたが、このコードがコンパイルできない理由を理解するのが困難です:

リーリー

関数 xyz では、t が文字列型であるように型制約があると仮定できないのはなぜですか?

単に f(string(p)) と書けばよいことはわかっていますが、それでも質問に対する答えに興味があります。


正解


これは、Assignability ルールによるもので、特定のケースでは最後のルールです。

v は型パラメータであり、t は名前付き型ではありません。v の型セット内のすべての型の値を t に割り当てることができます。

Typestring名前付き型であるため、t 型セット内のすべての型は string に割り当て可能ですが、型パラメータ t 自体は string に代入できません。

これを 名前のない型と比較できます。

リーリー

以上が厳密な制約を持つ型パラメーターを、そのパラメーターを持つ関数に渡しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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