// 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
}