Browse Source

int 断言

wangshan 4 months ago
parent
commit
6dfcaca97f
1 changed files with 36 additions and 31 deletions
  1. 36 31
      common/common.go

+ 36 - 31
common/common.go

@@ -39,7 +39,7 @@ func Uuid(length int) string {
 	return strings.Join(ret, "")
 }
 
-//计算字符串和值
+// 计算字符串和值
 func Sumstring(code string) (sum int) {
 	tmp := []rune(code)
 	for _, v := range tmp {
@@ -48,7 +48,7 @@ func Sumstring(code string) (sum int) {
 	return
 }
 
-//获取随机数
+// 获取随机数
 func GetRandom(n int) string {
 	var idChars = []byte("0123456789")
 	b := captcha.RandomDigits(n)
@@ -58,7 +58,7 @@ func GetRandom(n int) string {
 	return string(b)
 }
 
-//获取复杂的随机数
+// 获取复杂的随机数
 func GetLetterRandom(length int, flag ...bool) string {
 	var idChars = []byte("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")
 	var mod byte = 52
@@ -145,14 +145,14 @@ func EncryCode(value string) string {
 	return value
 }
 
-//生成32位md5字串
+// 生成32位md5字串
 func GetMd5String(s string) string {
 	h := md5.New()
 	h.Write([]byte(s))
 	return hex.EncodeToString(h.Sum(nil))
 }
 
-//obj(string,M)转M,查询用到
+// obj(string,M)转M,查询用到
 func ObjToMap(obj interface{}) *map[string]interface{} {
 	data := make(map[string]interface{})
 	if s, ok := obj.(string); ok {
@@ -194,7 +194,7 @@ func IntAll(num interface{}) int {
 
 func Int64All(num interface{}) int64 {
 	if i, ok := num.(int64); ok {
-		return int64(i)
+		return i
 	} else if i0, ok0 := num.(int32); ok0 {
 		return int64(i0)
 	} else if i1, ok1 := num.(float64); ok1 {
@@ -213,10 +213,13 @@ func Int64All(num interface{}) int64 {
 		return int64(i6)
 	} else if i7, ok7 := num.(*big.Int); ok7 {
 		in, _ := strconv.ParseInt(fmt.Sprint(i7), 10, 64)
-		return int64(in)
+		return in
 	} else if i8, ok8 := num.(*big.Float); ok8 {
 		in, _ := strconv.ParseInt(fmt.Sprint(i8), 10, 64)
-		return int64(in)
+		return in
+	} else if i9, ok9 := num.(json.Number); ok9 {
+		in, _ := i9.Int64()
+		return in
 	} else {
 		return 0
 	}
@@ -263,7 +266,7 @@ func Float64All(num interface{}) float64 {
 
 func IntAllDef(num interface{}, defaultNum int) int {
 	if i, ok := num.(int); ok {
-		return int(i)
+		return i
 	} else if i0, ok0 := num.(int32); ok0 {
 		return int(i0)
 	} else if i1, ok1 := num.(float64); ok1 {
@@ -274,16 +277,19 @@ func IntAllDef(num interface{}, defaultNum int) int {
 		return int(i3)
 	} else if i4, ok4 := num.(string); ok4 {
 		in, _ := strconv.Atoi(i4)
-		return int(in)
+		return in
 	} else if i5, ok5 := num.(int16); ok5 {
 		return int(i5)
 	} else if i6, ok6 := num.(int8); ok6 {
 		return int(i6)
 	} else if i7, ok7 := num.(*big.Int); ok7 {
 		in, _ := strconv.Atoi(fmt.Sprint(i7))
-		return int(in)
+		return in
 	} else if i8, ok8 := num.(*big.Float); ok8 {
 		in, _ := strconv.Atoi(fmt.Sprint(i8))
+		return in
+	} else if i9, ok9 := num.(json.Number); ok9 {
+		in, _ := i9.Int64()
 		return int(in)
 	} else {
 		return defaultNum
@@ -313,7 +319,7 @@ func ObjToStringDef(old interface{}, defaultstr string) string {
 	}
 }
 
-//对象数组转成string数组
+// 对象数组转成string数组
 func ObjArrToStringArr(old []interface{}) []string {
 	if old != nil {
 		new := make([]string, len(old))
@@ -326,7 +332,7 @@ func ObjArrToStringArr(old []interface{}) []string {
 	}
 }
 
-//对象数组转成map数组
+// 对象数组转成map数组
 func ObjArrToMapArr(old []interface{}) []map[string]interface{} {
 	if old != nil {
 		new := make([]map[string]interface{}, len(old))
@@ -339,7 +345,7 @@ func ObjArrToMapArr(old []interface{}) []map[string]interface{} {
 	}
 }
 
-//map数组转成对象数组
+// map数组转成对象数组
 func MapArrToObjArr(old []map[string]interface{}) []interface{} {
 	if old != nil {
 		new := make([]interface{}, len(old))
@@ -404,7 +410,7 @@ func SubString(str string, begin, length int) (substr string) {
 	return string(rs[begin:end])
 }
 
-//捕获异常
+// 捕获异常
 func Try(fun func(), handler func(interface{})) {
 	defer func() {
 		if err := recover(); err != nil {
@@ -421,7 +427,7 @@ func Try(fun func(), handler func(interface{})) {
 	fun()
 }
 
-//3目运算
+// 3目运算
 func If(b bool, to, fo interface{}) interface{} {
 	if b {
 		return to
@@ -430,7 +436,7 @@ func If(b bool, to, fo interface{}) interface{} {
 	}
 }
 
-//HashCode值
+// HashCode值
 func HashCode(uid string) int {
 	var h uint32 = 0
 	rs := []rune(uid)
@@ -440,7 +446,7 @@ func HashCode(uid string) int {
 	return int(h)
 }
 
-//获取离n天的秒差
+// 获取离n天的秒差
 func GetDayStartSecond(n int) int64 {
 	now := time.Now()
 	tom := time.Date(now.Year(), now.Month(), now.Day()+n, 0, 0, 0, 0, time.Local)
@@ -478,7 +484,7 @@ func EndWith(value, str string) bool {
 	return ok
 }
 
-//出错拦截
+// 出错拦截
 func Catch() {
 	if r := recover(); r != nil {
 		log.Println(r)
@@ -515,7 +521,7 @@ func ConvertFileSize(s int) string {
 	return fmt.Sprintf("%d B", s)
 }
 
-//MD5签名
+// MD5签名
 func WxSign(format string, param ...interface{}) string {
 	data := fmt.Sprintf(format, param...)
 	h := md5.New()
@@ -524,7 +530,7 @@ func WxSign(format string, param ...interface{}) string {
 	return sign
 }
 
-//计算时差
+// 计算时差
 func TimeDiff(date time.Time) string {
 	var date1 = date                        //开始时间
 	var date2 = time.Now()                  //结束时间
@@ -563,7 +569,7 @@ func FloatFormat(tmp float64, n int) float64 {
 	return f
 }
 
-//生成微信支付的签名
+// 生成微信支付的签名
 func CreateWxSign(afterStr string, obj interface{}, filter ...string) string {
 	filter = append(filter, "sign", "xml")
 	keys := []string{}
@@ -611,7 +617,7 @@ L:
 	return WxSign(strings.Join(vs, "&") + afterStr)
 }
 
-//简单的xml转map,只有一个层级,没有多层嵌套
+// 简单的xml转map,只有一个层级,没有多层嵌套
 func XmlToMap(input string) map[string]string {
 	var t xml.Token
 	var err error
@@ -667,19 +673,19 @@ func SimpleCrontab(flag bool, c string, f func()) {
 	}
 }
 
-//v保留n为小数,n后的四舍五入
+// v保留n为小数,n后的四舍五入
 func RetainDecimal(v float64, n int) float64 {
 	n10 := math.Pow10(n)
 	return math.Trunc((v+0.5/n10)*n10) / n10
 }
 
-//序列化成想要的类型,再断言
+// 序列化成想要的类型,再断言
 func JsonUnmarshal(m interface{}, s interface{}) interface{} {
 	JsonUnmarshalByErr(m, s)
 	return s
 }
 
-//序列化成想要的类型,再断言
+// 序列化成想要的类型,再断言
 func JsonUnmarshalByErr(m interface{}, s interface{}) (interface{}, error) {
 	var b []byte
 	var err error
@@ -759,7 +765,7 @@ func Bind(data interface{}, ret interface{}) error {
 	return nil
 }
 
-//string
+// string
 func InterfaceToStr(x interface{}) string {
 	switch st := reflect.ValueOf(x); st.Kind() {
 	case reflect.Uint, reflect.Uintptr, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
@@ -777,7 +783,7 @@ func InterfaceToStr(x interface{}) string {
 
 }
 
-//StrFormat string追加格式化双引号
+// StrFormat string追加格式化双引号
 func StrFormat(s string) string {
 	if s == "" {
 		return ""
@@ -785,7 +791,7 @@ func StrFormat(s string) string {
 	return fmt.Sprintf("\"%s\"", s)
 }
 
-//判断是否是微信访问
+// 判断是否是微信访问
 func IsWxBrowser(Request *http.Request) bool {
 	if strings.Index(Request.UserAgent(), "MicroMessenger") > -1 || strings.Index(Request.UserAgent(), "Wechat") > -1 {
 		return true
@@ -794,7 +800,6 @@ func IsWxBrowser(Request *http.Request) bool {
 	}
 }
 
-//
 func ShortenTxt(length int, fixed, shorten string) string {
 	if len([]rune(fixed)) > length {
 		return ""
@@ -807,7 +812,7 @@ func ShortenTxt(length int, fixed, shorten string) string {
 	return ""
 }
 
-//获取问号占位符数量及对应的参数值
+// 获取问号占位符数量及对应的参数值
 func WhArgs(args []string) (string, []interface{}) {
 	newArgs := make([]interface{}, len(args))
 	wh := make([]string, len(args))