in azkustodata/value/int.go [45:77]
func (in *Int) Unmarshal(i interface{}) error {
if i == nil {
in.value = nil
return nil
}
var myInt int64
switch v := i.(type) {
case json.Number:
var err error
myInt, err = v.Int64()
if err != nil {
return parseError(in, i, err)
}
case float64:
if v != math.Trunc(v) {
return parseError(in, i, fmt.Errorf("float64 value was not an integer"))
}
myInt = int64(v)
case int:
myInt = int64(v)
default:
return convertError(in, i)
}
if myInt > math.MaxInt32 {
return parseError(in, i, fmt.Errorf("value was too large for int32"))
}
val := int32(myInt)
in.value = &val
return nil
}