goスライスの要素の存在をチェックするgoで、goでは、スライスには、要素の存在を決定するためのスライス(オブジェクト)のような方法はネイティブに含まれていません。代わりに、一般的なソリューションは、各要素を繰り返して検索を実行することです。 「FMT」をインポートする func main(){ スライス:= [] int {1、2、3} SliceContains(スライス、2)の場合{ fmt.println( "contains") } それ以外 { fmt.println( "contains") } } func sliceContains(slice [] int、object int)bool { _、v:=範囲スライス{ v ==オブジェクトの場合{ trueを返します } } falseを返します }
バイナリ検索:
MKBが提案しているように、ソートパッケージのバイナリ検索アルゴリズムを利用して、大きなスライスに対してより効率的なアプローチを提供します。 輸入 ( 「FMT」 "選別" )) func main(){ スライス:= [] int {1、2、3} sort.ints(スライス) index:= sort.searchints(スライス、2) index!= len(slice)の場合{ fmt.println( "contains") } それ以外 { fmt.println( "contains") } }
マップを使用して:
多数の存在チェックが予想される場合、マップをスライスの代替として使用すると、より効率的なソリューションが提供されます。 輸入 ( 「FMT」 「同期」 )) func main(){ スライス:= [] int {1、2、3} m:= make(map [int] struct {}、len(slice))) _、v:=範囲スライス{ m [v] = struct {} {} } _、存在する場合:= m [2];存在する{ fmt.println( "contains") } それ以外 { fmt.println( "contains") } }このシナリオでは、マップ[string] struct {}は、そのような値に対して最適化された内部マップタイプのためにセットに頻繁に使用されます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3