ホームページ  >  記事  >  バックエンド開発  >  Go スライスまたは配列内で固有の項目を見つけるにはどうすればよいですか?

Go スライスまたは配列内で固有の項目を見つけるにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-01 04:16:27919ブラウズ

How to Find Unique Items in a Go Slice or Array?

スライスまたは配列内で一意の項目を検索する

Go では、スライスまたは配列内で一意の項目を維持するのは初心者にとって難しい場合があります。このガイドでは、この問題に対処し、手動比較方法とセットベースの代替方法の両方を提供します。

手動比較方法

手動比較方法には、配列と各要素を他のすべての要素と比較してチェックします。重複が見つかった場合はスキップされます。最適化された例を次に示します。

<code class="go">visited := []visit{
    visit{1, 100},
    visit{2, 2},
    visit{1, 100},
    visit{1, 1},
}
unique := map[visit]bool{}

for _, v := range visited {
    unique[v] = true
}

var uniqueVisits []visit
for v := range unique {
    uniqueVisits = append(uniqueVisits, v)
}

fmt.Println(uniqueVisits)</code>

セットベースの代替

Go は、セットとして使用できるマップ データ構造を提供します。 visit 型のキーと bool 型の値を含むマップは、一意の値を維持するのに便利な方法です。以下に例を示します。

<code class="go">visited := []visit{
    visit{1, 100},
    visit{2, 2},
    visit{1, 100},
    visit{1, 1},
}
unique := map[visit]bool{}

for _, v := range visited {
    if !unique[v] {
        unique[v] = true
    }
}

var uniqueVisits []visit
for v := range unique {
    uniqueVisits = append(uniqueVisits, v)
}

fmt.Println(uniqueVisits)</code>

出力

どちらの方法でも同じ結果が出力されます。

[visit{1 100} visit{2 2} visit{1 1}]

最適な方法を選択してください。特定の実装要件。手動比較方法では要素の比較をきめ細かく制御できますが、セットベースの方法ではシンプルさと効率性が得られます。

以上がGo スライスまたは配列内で固有の項目を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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