package convx import ( "errors" "strconv" ) // interface 转 int64 func ToInt64(val interface{}) (i int64, err error) { switch v := val.(type) { case int: return int64(v), nil case int8: return int64(v), nil case int16: return int64(v), nil case int32: return int64(v), nil case int64: return v, nil case uint: return int64(v), nil case uint8: return int64(v), nil case uint16: return int64(v), nil case uint32: return int64(v), nil case uint64: return int64(v), nil case float32: return int64(v), nil case float64: return int64(v), nil case nil: return 0, nil case string: return strconv.ParseInt(v, 10, 64) case bool: if v { return 1, nil } else { return 0, nil } } return 0, errors.New("convx.ToInt64: unknown type") }