package govalidator import ( "encoding/json" "fmt" "reflect" "strconv" ) // ToString convert the input to a string. func ToString(obj interface{}) string { res := fmt.Sprintf("%v", obj) return string(res) } // ToJSON convert the input to a valid JSON string func ToJSON(obj interface{}) (string, error) { res, err := json.Marshal(obj) if err != nil { res = []byte("") } return string(res), err } // ToFloat convert the input string to a float, or 0.0 if the input is not a float. func ToFloat(str string) (float64, error) { res, err := strconv.ParseFloat(str, 64) if err != nil { res = 0.0 } return res, err } // ToInt convert the input string or any int type to an integer type 64, or 0 if the input is not an integer. func ToInt(value interface{}) (res int64, err error) { val := reflect.ValueOf(value) switch value.(type) { case int, int8, int16, int32, int64: res = val.Int() case uint, uint8, uint16, uint32, uint64: res = int64(val.Uint()) case string: if IsInt(val.String()) { res, err = strconv.ParseInt(val.String(), 0, 64) if err != nil { res = 0 } } else { err = fmt.Errorf("math: square root of negative number %g", value) res = 0 } default: err = fmt.Errorf("math: square root of negative number %g", value) res = 0 } return } // ToBoolean convert the input string to a boolean. func ToBoolean(str string) (bool, error) { return strconv.ParseBool(str) }