|
@@ -0,0 +1,98 @@
|
|
|
+package util
|
|
|
+
|
|
|
+import (
|
|
|
+ "fmt"
|
|
|
+ "log"
|
|
|
+ "math/big"
|
|
|
+ "runtime"
|
|
|
+ "strconv"
|
|
|
+)
|
|
|
+
|
|
|
+// ObjToString obj转string类型
|
|
|
+func ObjToString(old interface{}) string {
|
|
|
+ if nil == old {
|
|
|
+ return ""
|
|
|
+ } else {
|
|
|
+ r, _ := old.(string)
|
|
|
+ return r
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// IntAll obj转int
|
|
|
+func IntAll(num interface{}) int {
|
|
|
+ return IntAllDef(num, 0)
|
|
|
+}
|
|
|
+
|
|
|
+// Int64All obj转int64
|
|
|
+func Int64All(num interface{}) int64 {
|
|
|
+ if i, ok := num.(int64); ok {
|
|
|
+ return int64(i)
|
|
|
+ } else if i0, ok0 := num.(int32); ok0 {
|
|
|
+ return int64(i0)
|
|
|
+ } else if i1, ok1 := num.(float64); ok1 {
|
|
|
+ return int64(i1)
|
|
|
+ } else if i2, ok2 := num.(int); ok2 {
|
|
|
+ return int64(i2)
|
|
|
+ } else if i3, ok3 := num.(float32); ok3 {
|
|
|
+ return int64(i3)
|
|
|
+ } else if i4, ok4 := num.(string); ok4 {
|
|
|
+ i64, _ := strconv.ParseInt(i4, 10, 64)
|
|
|
+ //in, _ := strconv.Atoi(i4)
|
|
|
+ return i64
|
|
|
+ } else if i5, ok5 := num.(int16); ok5 {
|
|
|
+ return int64(i5)
|
|
|
+ } else if i6, ok6 := num.(int8); ok6 {
|
|
|
+ return int64(i6)
|
|
|
+ } else if i7, ok7 := num.(*big.Int); ok7 {
|
|
|
+ in, _ := strconv.ParseInt(fmt.Sprint(i7), 10, 64)
|
|
|
+ return int64(in)
|
|
|
+ } else if i8, ok8 := num.(*big.Float); ok8 {
|
|
|
+ in, _ := strconv.ParseInt(fmt.Sprint(i8), 10, 64)
|
|
|
+ return int64(in)
|
|
|
+ } else {
|
|
|
+ return 0
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func IntAllDef(num interface{}, defaultNum int) int {
|
|
|
+ if i, ok := num.(int); ok {
|
|
|
+ return int(i)
|
|
|
+ } else if i0, ok0 := num.(int32); ok0 {
|
|
|
+ return int(i0)
|
|
|
+ } else if i1, ok1 := num.(float64); ok1 {
|
|
|
+ return int(i1)
|
|
|
+ } else if i2, ok2 := num.(int64); ok2 {
|
|
|
+ return int(i2)
|
|
|
+ } else if i3, ok3 := num.(float32); ok3 {
|
|
|
+ return int(i3)
|
|
|
+ } else if i4, ok4 := num.(string); ok4 {
|
|
|
+ in, _ := strconv.Atoi(i4)
|
|
|
+ return int(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)
|
|
|
+ } else if i8, ok8 := num.(*big.Float); ok8 {
|
|
|
+ in, _ := strconv.Atoi(fmt.Sprint(i8))
|
|
|
+ return int(in)
|
|
|
+ } else {
|
|
|
+ return defaultNum
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// Catch 出错拦截
|
|
|
+func Catch() {
|
|
|
+ if r := recover(); r != nil {
|
|
|
+ log.Println(r)
|
|
|
+ for skip := 0; ; skip++ {
|
|
|
+ _, file, line, ok := runtime.Caller(skip)
|
|
|
+ if !ok {
|
|
|
+ break
|
|
|
+ }
|
|
|
+ go log.Printf("%v,%v\n", file, line)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|