mirror of
https://github.com/unti-io/go-utils.git
synced 2025-10-25 00:50:20 +08:00
v1.1.2
v1.1.2
This commit is contained in:
26
utils/in.go
26
utils/in.go
@@ -1,13 +1,29 @@
|
||||
package utils
|
||||
|
||||
import "reflect"
|
||||
import (
|
||||
"reflect"
|
||||
"sync"
|
||||
)
|
||||
|
||||
// InArray - 判断某个值是否在数组中
|
||||
func InArray[T any](value T, array []T) (ok bool) {
|
||||
var wg sync.WaitGroup
|
||||
var mutex sync.Mutex
|
||||
found := false
|
||||
for _, val := range array {
|
||||
if reflect.DeepEqual(value, val) {
|
||||
return true
|
||||
if found {
|
||||
break
|
||||
}
|
||||
wg.Add(1)
|
||||
go func(item T) {
|
||||
defer wg.Done()
|
||||
if reflect.DeepEqual(value, item) {
|
||||
mutex.Lock()
|
||||
found = true
|
||||
mutex.Unlock()
|
||||
}
|
||||
}(val)
|
||||
}
|
||||
return false
|
||||
}
|
||||
wg.Wait()
|
||||
return found
|
||||
}
|
||||
Reference in New Issue
Block a user