ホームページ > バックエンド開発 > Golang > Go ジェネリックは、渡された値の特定フィールドの可用性をどのように強制できますか?

Go ジェネリックは、渡された値の特定フィールドの可用性をどのように強制できますか?

Mary-Kate Olsen
リリース: 2024-12-10 16:38:11
オリジナル
535 人が閲覧しました

How Can Go Generics Enforce the Availability of Specific Fields in Passed Values?

ジェネリックを使用して、渡された値のフィールドの可用性を強制する

Go では、ジェネリックを使用して型の安全性を強化し、明示的なプロパティの必要性を排除できます。型キャスト。ただし、特定のフィールドを必要とする値を操作する場合、Go 1.18 のジェネリックスの現在の実装では課題が生じます。

問題ステートメント

提供された例で概説されているように、 ID int などの特定のフィールドの値を受け入れる汎用関数を定義しようとしましたが、現在のアプローチでは成功しませんでした。目標は、関数に渡されるすべての値にこのプロパティがあり、関数自体内でアクセスできるようにすることです。

Go 1.18 ジェネリックの制限

現在、Goジェネリックスは構造型をサポートしていません。つまり、構造体にのみ基づいて、構造体に特定のフィールドがあるかどうかを判断できません。 ~T (チルダ型) 近似は、基になる型が正確に T である型を示すために使用されます。

この例では、~struct{ ID int } は、基になる型が正確に struct{ ID int } である型を指定します。これには、他のフィールドとともに ID int フィールドを持つ構造体は含まれません。

解決策

インターフェイス制約にフィールド項が存在しない場合、強制することはできません。 Go 1.18 では、インターフェイスでメソッドを定義せずにジェネリックを使用して特定のフィールドを利用できるようになります。したがって、共用体の共通フィールドにアクセスする必要がある場合は、提供されている説明を参照する必要があります。

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

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