package convx import ( "errors" "strconv" ) // interface 转 int func ToInt(val interface{}) (i int, err error) { switch v := val.(type) { case nil: return 0, nil case string: return strconv.Atoi(v) case float32: return int(v), nil case float64: return int(v), nil case int: return v, nil case int8: return int(v), nil case int16: return int(v), nil case int32: return int(v), nil case int64: return int(v), nil case uint: return int(v), nil case uint8: return int(v), nil case uint32: return int(v), nil case uint64: return int(v), nil case bool: if v { return 1, nil } else { return 0, nil } } return 0, errors.New("can not convert to int") }