を使用してさまざまな型の結果を保存およびロードしようとすると汎用インターフェイスとその実装では、Go で V を推論する際に問題が発生します。 type:
cannot infer V: infer type parameter from constraint implementation
Go 1.20 以前では、汎用制約 ConfigStorage[K, V] の実装から型 V を推論するのは簡単ではありません。型推論アルゴリズムは、制約を実装する具体的な型から型引数を推定する機能に制限があります。
Go 1.21 以降:
以降Go 1.21 では、この問題は解決されています。型推論では、インターフェイス メソッドで使用される型が考慮されるようになりました。したがって、型制約を指定せずに単純に GetValue を呼び出すことができます:
result, _ = GetValue(fileStorage, "key")
Go 1.20 以下:
Go の古いバージョンでは、型を明示的に指定する必要がありますGetValue のパラメータ:
GetValue[string, string](fileStorage, "key") // First string for K, second for V
Go のリリース ノートでは、インターフェイスに値を割り当てるときに型推論でメソッドが考慮されるようになったことが強調されています。これにより、メソッド シグネチャの型パラメータの型引数を、メソッドの一致するパラメータ型から推論できるようになります。
Go 1.21 より前では、提案では、関数引数の型推論を使用して、非型引数から型引数を推測することが提案されていました。ただし、制約型推論は当初、既知の型引数から未知の型引数を推定するためにサポートされていませんでした。この制限により、制約を実装する型から V を推論するときに「V を推論できません」エラーが発生しました。
以上が汎用インターフェイスを実装する際の Go の「V を推論できません」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。