Go でジェネリック関数を使用してフィールドの存在を強制する
Go でジェネリック関数を開発する場合、渡された値が特定のフィールド基準に準拠していることを確認することが重要になる場合があります。 。この文脈で、一般的な質問が生じます。ジェネリックを利用して、渡された値に ID int などの特定のフィールドが存在することを検証できますか?
さまざまなアプローチが試みられていますが、現在の Go におけるジェネリックの実装は、 1.18 では制限が導入されています。構造型はサポートされていません。その結果、インターフェイス メソッドに依存せずに、特定のフィールドの値のみを受け入れる汎用関数を定義することは、現時点では実現不可能です。
ただし、近似構文 ~T の重要性を理解することが重要です。提供されている例では、 ~struct{ ID int } は、基になる型が正確に struct{ ID int } である型を意味します。これにより、他のフィールドとともに ID int フィールドを持つ構造体が除外されます。
インターフェイス制約におけるフィールド項の提案は存在しますが、Go 1.18 には含まれていません。したがって、現在のジェネリックスの実装には、部分的な構造体型を定義するための構文がありません。
そのため、値が特定のフィールドを確実に所有できるようにするには、インターフェイスで対応するメソッドを定義することが唯一の実行可能なオプションとなります。
以上がGo ジェネリックは構造体内の特定のフィールドの存在を強制できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。