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