Go 言語は、「インターネット時代の C 言語」として知られる、強く型付けされた静的言語です。 Go 言語の標準ライブラリでは、マップは非常に一般的に使用されるデータ構造であり、キーと値のペアを格納するためによく使用されます。 make関数を使用してマップを作成でき、豊富な操作方法を提供します。ただし、マップの要素数が増えると、マップが占有するメモリがますます大きくなり、制御しないとプログラムのメモリ使用量が過剰になる可能性があります。この記事では、プログラム メモリをより適切に制御できるように、golang マップの重複排除を実装するいくつかの方法を紹介します。
マップ内の指定した要素を削除するには、組み込みの削除関数を使用する必要があります。ただし、マップ内のすべての要素を重複排除する必要がある場合は、マップを走査して要素の数をカウントすることでマップの重複排除を実現できます。
具体的なプロセスは次のとおりです:
サンプル コードは次のとおりです。
func removeDuplicate(m map[string]string) map[string]string { counts := make(map[string]int) for _, v := range m { counts[v] += 1 } res := make(map[string]string) for k, v := range m { if counts[v] == 1 { res[k] = v } } return res }
Golang マップ重複排除のもう 1 つの方法は、スライスを補助ストレージとして使用することです。 。プロセスは次のとおりです:
サンプル コードは次のとおりです。
func removeDuplicate(m map[string]string) []string { res := make([]string, 0, len(m)) temp := make(map[string]bool) for _, v := range m { if _, ok := temp[v]; !ok { temp[v] = true res = append(res, v) } } return res }
フィルタリングに構造体を使用することも、マップの重複排除を実現する方法の 1 つです。 。
サンプル コードは次のとおりです。
func removeDuplicate(m map[string]string) map[string]struct{} { res := make(map[string]struct{}, len(m)) for _, v := range m { res[v] = struct{}{} } return res }
上記は、Golang マップの重複排除を実装する 3 つの方法、つまりトラバースとカウント、およびスライスの使用です。補助ストレージを使用し、フィルタリングに構造体を使用します。マップを使用する場合は、過剰なメモリ使用量やプログラムのパフォーマンスへの影響を避けるために要素数の制御に注意してください。この記事がお役に立てば幸いです。
以上がgolang でマップの重複を排除するためのいくつかの方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。