関数が関数を返すときに Go ジェネリックスが失敗するのはなぜですか?

王林
リリース: 2024-02-05 21:33:11
転載
492 人が閲覧しました

为什么当函数返回一个函数时 Go 泛型会失败?

質問の内容

外出先でジェネリックを実験し始めたところ、失敗した理由が完全に理解できない状況に遭遇しました。

次の関数をリファクタリングしました:

リーリー

これを入力してください:

リーリー

この関数の単体テストはエラーで失敗しました: tests/utils/numberutils_test.go:82:50: t を推論できません 。ソースは次のとおりです:

リーリー

同様の関数を int から generic に変更しましたが、なぜこの関数が具体的に機能しないのかわかりません。別の関数を返す関数と関係があるのではないかと思いますが、その理由は正確にはわかりません。ありがとう。


正解


通常、答えは型パラメータ提案:

にあります。

推論できる型パラメータは、関数 (非型) 入力パラメータ型に使用されるものだけです。関数の結果パラメーターの型のみ、または関数本体のみに使用される型パラメーターがある場合、関数パラメーターの型推論を使用してそれらの型パラメーターを推論することはできません。

###の場合### リーリー

型パラメータ

t

がパラメータ リストに表示されないため、対応する型パラメータを推測できません。

以上が関数が関数を返すときに Go ジェネリックスが失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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