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 }