Files
utils/convx/to_int.go
T
2023-09-16 20:14:20 +08:00

41 lines
798 B
Go

package convx
import (
"errors"
"strconv"
)
// interface 转 int
func ToInt(val interface{}) (i int, err error) {
if v, ok := val.(string); ok {
// 不支持小数转换
i, err = strconv.Atoi(v)
} else if v, ok := val.(float32); ok {
i = int(v)
} else if v, ok := val.(float64); ok {
i = int(v)
} else if v, ok := val.(int); ok {
i = v
} else if v, ok := val.(int32); ok {
i = int(v)
} else if v, ok := val.(int64); ok {
i = int(v)
} else if v, ok := val.(uint); ok {
i = int(v)
} else if v, ok := val.(uint32); ok {
i = int(v)
} else if v, ok := val.(uint64); ok {
i = int(v)
} else if v, ok := val.(bool); ok {
if v {
i = 1
} else {
i = 0
}
} else {
return 0, errors.New("类型转换失败")
}
return
}