Go でジェネリック関数を使用して渡された値に特定のフィールドがあることを確認する
問題:
開発者は多くの場合ジェネリック関数を必要としますGo では、特定のフィールドの値を受け入れます。さまざまなアプローチを使用して試みが行われてきましたが、実行可能な解決策を見つけるのは困難でした。
質問:
特定のフィールドの存在を強制する汎用関数を Go に実装できますか (インターフェイス メソッド (「GetID() など)」を使用せずに、渡された値に対して「ID int」フィールドなど) int")?
答え:
残念ながら、答えは いいえです。
バージョン 1.18 の Go のジェネリック実装では、構造型はサポートされていません。したがって、渡された値の共通フィールドにアクセスするには、インターフェイス内のメソッドが必要です。
チルダ型構文 (~T) は、基になる型が正確に T である型のセットを示すことを明確にすることが重要です。 「~struct{ ID int }」には、「ID int」フィールドと追加のフィールドを持つ構造体は含まれません。
この制限に対処するための提案は存在しますが、それらは実現されません。 Go 1.18.
で実装されました。以上がGo ジェネリクスはインターフェイス メソッドなしで渡された値の特定のフィールドを強制できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。