ホームページ  >  記事  >  バックエンド開発  >  関数が関数を返すときに Go ジェネリックスが失敗するのはなぜですか?

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

王林
王林転載
2024-02-05 21:33:11479ブラウズ

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

質問の内容

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

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

リーリー

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

リーリー

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

リーリー

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


正解


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

にあります。

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

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

型パラメータ

t

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

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

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