default type check 'int' does not use 'reflect' anymore
This commit is contained in:
parent
f9a928c181
commit
50de7a4297
|
@ -2,27 +2,12 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"git.xdrm.io/go/aicra/driver"
|
"git.xdrm.io/go/aicra/driver"
|
||||||
"reflect"
|
"math"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {}
|
func main() {}
|
||||||
func Export() driver.Checker { return new(IntChecker) }
|
func Export() driver.Checker { return new(IntChecker) }
|
||||||
|
|
||||||
var validationTable = map[reflect.Kind]interface{}{
|
|
||||||
reflect.Float32: nil,
|
|
||||||
reflect.Float64: nil,
|
|
||||||
reflect.Int: nil,
|
|
||||||
reflect.Int8: nil,
|
|
||||||
reflect.Int16: nil,
|
|
||||||
reflect.Int32: nil,
|
|
||||||
reflect.Int64: nil,
|
|
||||||
reflect.Uint: nil,
|
|
||||||
reflect.Uint8: nil,
|
|
||||||
reflect.Uint16: nil,
|
|
||||||
reflect.Uint32: nil,
|
|
||||||
reflect.Uint64: nil,
|
|
||||||
}
|
|
||||||
|
|
||||||
type IntChecker int
|
type IntChecker int
|
||||||
|
|
||||||
// Match matches the string 'int'
|
// Match matches the string 'int'
|
||||||
|
@ -33,10 +18,13 @@ func (ick IntChecker) Match(name string) bool {
|
||||||
// Check returns true for any type from the @validationTable
|
// Check returns true for any type from the @validationTable
|
||||||
func (ick IntChecker) Check(value interface{}) bool {
|
func (ick IntChecker) Check(value interface{}) bool {
|
||||||
|
|
||||||
kind := reflect.TypeOf(value).Kind()
|
// check if float (default wrapping type)
|
||||||
|
floatVal, ok := value.(float64)
|
||||||
|
if !ok {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
_, isTypeValid := validationTable[kind]
|
// check if there is no floating point
|
||||||
|
return floatVal == math.Floor(floatVal)
|
||||||
return isTypeValid
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue