ホームページ > バックエンド開発 > Golang > Go ジェネリクスはインターフェイス メソッドなしで渡された値の特定のフィールドを強制できますか?

Go ジェネリクスはインターフェイス メソッドなしで渡された値の特定のフィールドを強制できますか?

Mary-Kate Olsen
リリース: 2024-12-07 11:00:17
オリジナル
361 人が閲覧しました

Can Go Generics Enforce Specific Fields in Passed Values Without Interface Methods?

Go でジェネリック関数を使用して渡された値に特定のフィールドがあることを確認する

問題:
開発者は多くの場合ジェネリック関数を必要としますGo では、特定のフィールドの値を受け入れます。さまざまなアプローチを使用して試みが行われてきましたが、実行可能な解決策を見つけるのは困難でした。

質問:
特定のフィールドの存在を強制する汎用関数を Go に実装できますか (インターフェイス メソッド (「GetID() など)」を使用せずに、渡された値に対して「ID int」フィールドなど) int")?

答え:
残念ながら、答えは いいえです。

バージョン 1.18 の Go のジェネリック実装では、構造型はサポートされていません。したがって、渡された値の共通フィールドにアクセスするには、インターフェイス内のメソッドが必要です。

チルダ型構文 (~T) は、基になる型が正確に T である型のセットを示すことを明確にすることが重要です。 「~struct{ ID int }」には、「ID int」フィールドと追加のフィールドを持つ構造体は含まれません。

この制限に対処するための提案は存在しますが、それらは実現されません。 Go 1.18.

で実装されました。

以上がGo ジェネリクスはインターフェイス メソッドなしで渡された値の特定のフィールドを強制できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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