20 lines
659 B
Go
20 lines
659 B
Go
// Package utils -----------------------------
|
|
// @file : unqiue.go
|
|
// @author : JJXu
|
|
// @contact : wavingbear@163.com
|
|
// @time : 2024/9/12 下午5:03
|
|
// -------------------------------------------
|
|
package utils
|
|
|
|
func Unique[T int | int8 | int32 | int64 | string](slice []T) []T {
|
|
seen := make(map[T]bool) // 创建一个 map 来跟踪已经看到的元素
|
|
unique := make([]T, 0) // 创建一个新的切片来存储唯一的元素
|
|
for _, v := range slice {
|
|
if _, ok := seen[v]; !ok {
|
|
seen[v] = true // 标记元素为已见
|
|
unique = append(unique, v) // 将元素添加到唯一元素切片中
|
|
}
|
|
}
|
|
return unique
|
|
}
|