func ToBoolAny(v interface{}) bool {
	if v, ok := v.(bool); ok {
		return v
	}
	if v, ok := v.(*bool); ok {
		if v != nil {
			return *v
		}
		return false
	}
	if v, ok := v.(int); ok {
		return v > 0
	}
	if v, ok := v.(int32); ok {
		return v > 0
	}
	if v, ok := v.(int64); ok {
		return v > 0
	}
	if v, ok := v.(float32); ok {
		return v > 0
	}
	if v, ok := v.(float64); ok {
		return v > 0
	}
	if v, ok := v.(*int); ok {
		if v != nil {
			return *v > 0
		}
	}
	if v, ok := v.(*int32); ok {
		if v != nil {
			return *v > 0
		}
	}
	if v, ok := v.(*int64); ok {
		if v != nil {
			return *v > 0
		}
	}
	if v, ok := v.(string); ok {
		return ToBool(v)
	}
	if v, ok := v.(*string); ok {
		if v != nil {
			return ToBool(*v)
		}
	}
	return false
}
ToBoolAny returns bool for interface{} and if parse error, return false
package number
import (
	"fmt"
	"math/big"
	"strconv"
)
func ToBool(v string) bool {
	if ok, err := strconv.ParseBool(v); err == nil {
		return ok
	}
	return false
}