mirror of
https://github.com/unti-io/go-utils.git
synced 2025-10-25 09:00:28 +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
|
package utils
|
||||||
|
|
||||||
import "reflect"
|
import (
|
||||||
|
"reflect"
|
||||||
|
"sync"
|
||||||
|
)
|
||||||
|
|
||||||
// InArray - 判断某个值是否在数组中
|
// InArray - 判断某个值是否在数组中
|
||||||
func InArray[T any](value T, array []T) (ok bool) {
|
func InArray[T any](value T, array []T) (ok bool) {
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
var mutex sync.Mutex
|
||||||
|
found := false
|
||||||
for _, val := range array {
|
for _, val := range array {
|
||||||
if reflect.DeepEqual(value, val) {
|
if found {
|
||||||
return true
|
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