53 lines
		
	
	
		
			798 B
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			53 lines
		
	
	
		
			798 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								package helper
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								判断是否存在
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  - @arr 数组
							 | 
						||
| 
								 | 
							
								  - @value 值
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								func ArrayAny[T comparable](arr []T, value T) bool {
							 | 
						||
| 
								 | 
							
									for _, v := range arr {
							 | 
						||
| 
								 | 
							
										if v == value {
							 | 
						||
| 
								 | 
							
											return true
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									return false
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 定义一个条件函数类型
							 | 
						||
| 
								 | 
							
								type ConditionFunc[T any] func(T) bool
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								判断是否存在
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  - @arr 数组
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  - @condition 判断函数
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    @return 对象指针
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								func ArrayAnyExtension[T any](arr *[]T, condition ConditionFunc[T]) *T {
							 | 
						||
| 
								 | 
							
									for _, v := range *arr {
							 | 
						||
| 
								 | 
							
										if condition(v) {
							 | 
						||
| 
								 | 
							
											return &v
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									return nil
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func RemoveDuplicates(nums []int64) []int64 {
							 | 
						||
| 
								 | 
							
									m := make(map[int64]bool)
							 | 
						||
| 
								 | 
							
									result := []int64{}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									for _, num := range nums {
							 | 
						||
| 
								 | 
							
										if !m[num] {
							 | 
						||
| 
								 | 
							
											m[num] = true
							 | 
						||
| 
								 | 
							
											result = append(result, num)
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									return result
							 | 
						||
| 
								 | 
							
								}
							 |