46 lines
847 B
Go
46 lines
847 B
Go
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
|
|
}
|