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

WBOY
リリース: 2024-02-05 23:48:11
転載
612 人が閲覧しました

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

質問の内容

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

リーリー

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

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


正解


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

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

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

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

リーリー

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

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート