ホームページ >バックエンド開発 >Golang >Go でさまざまなタイプのスライスに要素が存在するかどうかをどのように確認しますか?

Go でさまざまなタイプのスライスに要素が存在するかどうかをどのように確認しますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-02 03:11:30370ブラウズ

How do you check for element presence in slices of different types in Go?

Go でスライス内の要素の存在を一般的に確認する方法

Go では、スライスに特定の要素が含まれているかどうかを判断することができます。よくあるシナリオ。ただし、さまざまなスライス タイプ間でこの一般的なチェックを実行する組み込みメソッドはありません。

インターフェイスを使用した試行に失敗しました{}

インターフェイスを使用しようとしました{以下に示すように、一般的な解決策として } 型を使用することはもっともらしいと思われるかもしれません:

ただし、異なる型の値を比較すると、 (interface{}) は不正確な結果を招く可能性があります。

リフレクションを使用した汎用ソリューション

真に汎用的なソリューションを実現するには、リフレクションを使用できます。次の関数は、リフレクションを使用してスライスを反復処理し、各要素をターゲット要素と比較します。

このソリューションにより、任意のタイプのスライスに対して汎用要素チェックを実行できます。

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

汎用 Contains 関数は必要な機能を提供しますが、パフォーマンスはかなり高くなります。 料金。非汎用の等価関数に対してベンチマークを行うと、約 50 倍の速度低下係数が得られます。したがって、一般的な要素チェックにリフレクションを使用する前に、パフォーマンスへの影響を評価することが重要です。

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

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