package main import "fmt" func main() { a := []interface{}{2, 4, 5} b := []interface{}{3, 2, 5, 6} same, diff := getSameDiffMen(a, b) fmt.Println("获取相同元素:", same, " 不同元素:", diff) add, del := getAddDelMen(a, b) fmt.Println("获取增加元素:", add, " 删减元素:", del) } func getAddDelMen(old, new []interface{}) (add, del []interface{}) { temp := make(map[interface{}]interface{}) for i := 0; i < len(old); i++ { for j := i; j < len(new); j++ { if old[i] != new[j] { if _, ok := temp[old[i]]; !ok { // 旧数组有但新数组没有,需要删除,标记为1 temp[old[i]] = 1 } if _, ok := temp[new[j]]; !ok { // 旧数组没有但新数组有,需要增加,标记为2 temp[new[j]] = 2 } } else { temp[old[i]] = 3 // 新旧数组都有,标记为# } } } // 整理结果 for k, v := range temp { if v == 1 { del = append(del, k) } if v == 2 { add = append(add, k) } } return } func getSameDiffMen(old, new []interface{}) (same, diff []interface{}) { temp := make(map[interface{}]interface{}) for i := 0; i < len(old); i++ { for j := i; j < len(new); j++ { if old[i] != new[j] { if _, ok := temp[old[i]]; !ok { temp[old[i]] = 1 } if _, ok := temp[new[j]]; !ok { temp[new[j]] = 1 } } else { temp[old[i]] = 2 // 新旧数组都有,标记为2 } } } for k, v := range temp { if v == 1 { diff = append(diff, k) } if v == 2 { same = append(same, k) } } return }