2 つの整数スライスをマージし、重複要素のないスライスを返します。重複排除戦略は 2 つあります。
1. Double ループを渡します。重複する要素をフィルタリングする (時間はスペースと交換されます) (推奨学習: go)
// 通过两重循环过滤重复元素 func RemoveRepByLoop(slc []int) []int { result := []int{} // 存放结果 for i := range slc{ flag := true for j := range result{ if slc[i] == result[j] { flag = false // 存在重复元素,标识为false break } } if flag { // 标识为false,不添加进结果 result = append(result, slc[i]) } } return result }
2. 辞書によるフィルタリング (スペースは時間と交換されます)
辞書の主キーは一意であるため、要素が繰り返されているかどうかを判断するために使用できます。
// 通过map主键唯一的特性过滤重复元素 func RemoveRepByMap(slc []int) []int { result := []int{} tempMap := map[int]byte{} // 存放不重复主键 for _, e := range slc{ l := len(tempMap) tempMap[e] = 0 if len(tempMap) != l{ // 加入map后,map长度变化,则元素不重复 result = append(result, e) } } return result }
ps: メモリを節約するために、ここでは map[int]byte が使用されます。 mapの値を使用しないため、任意の型を使用できます。
以上がGolangでスライスから重複を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。