スライス内の効率的な検索: Go はネイティブ メソッドを提供しますか?
スライス内の要素をリストすることは Go の基本的な操作ですが、直接のslice.contains(object)メソッドがないのは不便な場合があります。代わりに、プログラマは通常、スライス内の各要素を反復処理して目的の要素を見つけます。
スライスの代替検索方法
ネイティブのスライス.contains()メソッドが存在しない場合でも、スライス内の要素の検索を実行するには別の方法がいくつかあります。 Mostafa が述べたように、カスタム func contains(value) bool 関数の作成は簡単です。あるいは、mkb で示唆されているように、sort パッケージのバイナリ検索アルゴリズムを利用することも効率的なアプローチとなります。
検索パフォーマンスの最適化
頻繁に包含チェックを必要とするシナリオの場合より効率的な解決策は、マップ データ構造を採用することかもしれません。 Go でマップを使用すると、メンバーシップを定期的にチェックできます。追跡する要素を表すキーを使用してマップを初期化すると、ok := yourmap[key] イディオムの値を使用してキーをすばやく検索できます。
メンバーシップ チェックのみが必要な場合は、 map[string]struct{} などの特殊なマップ タイプが有益な場合があります。この型の空の struct{} 値は追加のメモリを消費せず、マップの内部ストレージが最適化されます。その結果、Go でセットを表現するための選択肢として、map[string]struct{} が人気を博しました。
以上がGo は効率的な検索のためのネイティブ スライスを含むメソッドを提供しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。