// Package utils ----------------------------- // @file : arrary.go // @author : JJXu // @contact : wavingbear@163.com // @time : 2023/9/7 16:51 // ------------------------------------------- package utils // 数组去重 func ArrayDeduplicate[T int | int64 | string | int32 | bool](arr []T) []T { var subs []T for _, v := range arr { if len(subs) == 0 { subs = append(subs, v) } else { var exist bool for _, s := range subs { if s == v { exist = true break } } if !exist { subs = append(subs, v) } } } return subs } // Intersection 数组取交集 func Intersection(slice1 []string, slice2 []string) []string { m := make(map[string]bool) for _, item := range slice1 { m[item] = true } var result []string for _, item := range slice2 { if _, ok := m[item]; ok { result = append(result, item) } } return result } func DifferentFrom(origin []string, needRemove []string) []string { var newList = []string{} if len(origin) == 0 { return newList } if len(needRemove) == 0 { return origin } for _, item := range origin { var remove bool for _, removeItem := range needRemove { if item == removeItem { remove = true break } } if !remove { newList = append(newList, item) } } return newList }