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

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
}