You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
1.3 KiB
Go
78 lines
1.3 KiB
Go
package verify
|
|
|
|
import (
|
|
"joybuywork/internal/consts"
|
|
)
|
|
|
|
// InArray 在数值里面
|
|
func InArray[T consts.NormalType](val T, arr ...T) bool {
|
|
for _, v := range arr {
|
|
if v == val {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
// AllInArray 都在数值里面
|
|
func AllInArray[T consts.NormalType](vals, arr []T) bool {
|
|
if len(arr) != len(vals) {
|
|
return false
|
|
}
|
|
|
|
var arrMap = make(map[T]struct{}, len(arr))
|
|
for _, v := range arr {
|
|
arrMap[v] = struct{}{}
|
|
}
|
|
|
|
var num int
|
|
for _, v := range vals {
|
|
if _, ok := arrMap[v]; ok {
|
|
num++
|
|
}
|
|
}
|
|
|
|
return num == len(vals)
|
|
}
|
|
|
|
// OneInArray 有一个在数值里面
|
|
func OneInArray[T consts.NormalType](vals, arr []T) bool {
|
|
|
|
var arrMap = make(map[T]struct{}, len(arr))
|
|
for _, v := range arr {
|
|
arrMap[v] = struct{}{}
|
|
}
|
|
|
|
for _, v := range vals {
|
|
if _, ok := arrMap[v]; ok {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
// OutSide 不在区间里面
|
|
func OutSide[T consts.IntType](val, min, max T) bool {
|
|
return !Inside(val, min, max)
|
|
}
|
|
|
|
// Inside 在区间里面
|
|
func Inside[T consts.IntType](val, min, max T) bool {
|
|
if val >= min && val <= max {
|
|
return true
|
|
}
|
|
|
|
return false
|
|
}
|
|
|
|
// LInside 左闭在区间里面
|
|
func LInside[T consts.IntType](val, min, max T) bool {
|
|
if val >= min && val < max {
|
|
return true
|
|
}
|
|
|
|
return false
|
|
}
|