golang 求出这两个对象数组的2个差集,即存在其中一个数组,但是不存在于另一个数组

发布时间 2023-09-30 16:12:51作者: Lucky小黄人^_^

代码来自 chatgpt

package main

import (
	"fmt"
	"reflect"
)

type Object struct {
	ID int
}

func main() {
	a := []Object{{1}, {2}, {3}}
	b := []Object{{2}, {3}, {4}}

	diffAB := diff(a, b)
	diffBA := diff(b, a)

	fmt.Println("In A not in B: ", diffAB)
	fmt.Println("In B not in A: ", diffBA)
}

// diff 函数找出在 s1 中存在,但在 s2 中不存在的元素
func diff(s1, s2 []Object) (diffSlice []Object) {
	mapS2 := make(map[int]bool)

	for _, item := range s2 {
		mapS2[item.ID] = true
	}

	for _, item := range s1 {
		if _, found := mapS2[item.ID]; !found {
			diffSlice = append(diffSlice, item)
		}
	}
	
	return
}