package tool func SliceIntersectInt64(slice1, slice2 []int64) []int64 { m := make(map[int64]int) nn := make([]int64, 0) for _, v := range slice1 { m[v]++ } for _, v := range slice2 { times := m[v] if times == 1 { nn = append(nn, v) } } return nn } // SliceDifferenceInt64 returns the difference of two slices func SliceDifferenceInt64(slice1, slice2 []int64) []int64 { m := make(map[int64]int) nn := make([]int64, 0) inter := SliceIntersectInt64(slice1, slice2) for _, v := range inter { m[v]++ } for _, value := range slice1 { times := m[value] if times == 0 { nn = append(nn, value) } } return nn } // SliceIsExistInt64 checks if a value exists in a slice func SliceIsExistInt64(slice []int64, value int64) bool { for _, item := range slice { if item == value { return true } } return false }