ホームページ  >  記事  >  バックエンド開発  >  Go スライス内の要素の存在を一般的に確認するにはどうすればよいですか?

Go スライス内の要素の存在を一般的に確認するにはどうすればよいですか?

DDD
DDDオリジナル
2024-10-31 08:44:01262ブラウズ

How Can You Check for Element Presence in Go Slices Generically?

Go スライスでの要素検出への一般的なアプローチ

Go では、スライスに特定の要素が含まれているかどうかを判断することが一般的なタスクになることがあります。このための組み込みメソッドはありませんが、この機能を実現する汎用コードを記述することは可能です。

インターフェイスのアプローチ:

最初に、次のことを検討してください。未知の要素を表すために、interface{} タイプを使用します。ただし、このアプローチには、個々の要素を比較するために型アサーションが必要であるため、制限があります。

リフレクションベースのアプローチ:

より包括的なソリューションには、リフレクションを使用して要素にアクセスすることが含まれます。の要素をスライスし、目的の値と比較します。実装は次のとおりです。

このリフレクション ベースのアプローチは一般的なソリューションを提供し、要素の種類に関係なく、任意のスライス内の要素の存在を確認できます。ただし、追加のリフレクション オーバーヘッドにより、特定の要素タイプの関数に比べてパフォーマンスが大幅に低下します。

パフォーマンスに関する考慮事項:

ジェネリック Contains() のベンチマーク関数を非汎用同等のものと比較すると、大幅な速度低下が見られ、この例では約 50 ~ 60 倍遅くなります。

使用例:

次の例は、の使用法を示しています。 Contains() 関数:

以上がGo スライス内の要素の存在を一般的に確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。