func DifferenceInt64Ptr(arrList ...[]*int64) []*int64 {
	if arrList == nil {
		return []*int64{}
	}
	resultMap := make(map[int64]struct{})
	if len(arrList) == 1 {
		var newList []*int64
		for i := 0; i < len(arrList[0]); i++ {
			_, ok := resultMap[*arrList[0][i]]
			if !ok {
				resultMap[*arrList[0][i]] = struct{}{}
				newList = append(newList, arrList[0][i])
			}
		}
		return newList
	}
	var newList []*int64
	for i := 0; i < len(arrList[0]); i++ {
		matchCount := 0
		for j := 1; j < len(arrList); j++ {
			for _, v := range arrList[j] {
				if *arrList[0][i] == *v {
					matchCount++
					break
				}
			}
		}
		if matchCount == 0 {
			_, ok := resultMap[*arrList[0][i]]
			if !ok {
				newList = append(newList, arrList[0][i])
				resultMap[*arrList[0][i]] = struct{}{}
			}
		}
	}
	return newList
}
DifferenceInt64Ptr returns a set that is the first set without elements of the remaining sets
repeated value within list parameter will be ignored
package fp
func DifferenceInt(arrList ...[]int) []int {
	if arrList == nil {
		return []int{}
	}
	resultMap := make(map[int]struct{})
	if len(arrList) == 1 {
		var newList []int
		for i := 0; i < len(arrList[0]); i++ {
			_, ok := resultMap[arrList[0][i]]
			if !ok {
				newList = append(newList, arrList[0][i])
				resultMap[arrList[0][i]] = struct{}{}
			}
		}
		return newList
	}
	var newList []int
	for i := 0; i < len(arrList[0]); i++ {
		matchCount := 0
		for j := 1; j < len(arrList); j++ {
			for _, v := range arrList[j] {
				if arrList[0][i] == v {
					matchCount++
					break
				}
			}
		}
		if matchCount == 0 {
			_, ok := resultMap[arrList[0][i]]
			if !ok {
				newList = append(newList, arrList[0][i])
				resultMap[arrList[0][i]] = struct{}{}
			}
		}
	}
	return newList
}
func DifferenceIntPtr(arrList ...[]*int) []*int {
	if arrList == nil {
		return []*int{}
	}
	resultMap := make(map[int]struct{})
	if len(arrList) == 1 {
		var newList []*int
		for i := 0; i < len(arrList[0]); i++ {
			_, ok := resultMap[*arrList[0][i]]
			if !ok {
				resultMap[*arrList[0][i]] = struct{}{}
				newList = append(newList, arrList[0][i])
			}
		}
		return newList
	}
	var newList []*int
	for i := 0; i < len(arrList[0]); i++ {
		matchCount := 0
		for j := 1; j < len(arrList); j++ {
			for _, v := range arrList[j] {
				if *arrList[0][i] == *v {
					matchCount++
					break
				}
			}
		}
		if matchCount == 0 {
			_, ok := resultMap[*arrList[0][i]]
			if !ok {
				newList = append(newList, arrList[0][i])
				resultMap[*arrList[0][i]] = struct{}{}
			}
		}
	}
	return newList
}
func DifferenceInt64(arrList ...[]int64) []int64 {
	if arrList == nil {
		return []int64{}
	}
	resultMap := make(map[int64]struct{})
	if len(arrList) == 1 {
		var newList []int64
		for i := 0; i < len(arrList[0]); i++ {
			_, ok := resultMap[arrList[0][i]]
			if !ok {
				newList = append(newList, arrList[0][i])
				resultMap[arrList[0][i]] = struct{}{}
			}
		}
		return newList
	}
	var newList []int64
	for i := 0; i < len(arrList[0]); i++ {
		matchCount := 0
		for j := 1; j < len(arrList); j++ {
			for _, v := range arrList[j] {
				if arrList[0][i] == v {
					matchCount++
					break
				}
			}
		}
		if matchCount == 0 {
			_, ok := resultMap[arrList[0][i]]
			if !ok {
				newList = append(newList, arrList[0][i])
				resultMap[arrList[0][i]] = struct{}{}
			}
		}
	}
	return newList
}