util.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package util
  2. import (
  3. "fmt"
  4. "log"
  5. "math/big"
  6. "runtime"
  7. "strconv"
  8. )
  9. // ObjToString obj转string类型
  10. func ObjToString(old interface{}) string {
  11. if nil == old {
  12. return ""
  13. } else {
  14. r, _ := old.(string)
  15. return r
  16. }
  17. }
  18. // IntAll obj转int
  19. func IntAll(num interface{}) int {
  20. return IntAllDef(num, 0)
  21. }
  22. // Int64All obj转int64
  23. func Int64All(num interface{}) int64 {
  24. if i, ok := num.(int64); ok {
  25. return int64(i)
  26. } else if i0, ok0 := num.(int32); ok0 {
  27. return int64(i0)
  28. } else if i1, ok1 := num.(float64); ok1 {
  29. return int64(i1)
  30. } else if i2, ok2 := num.(int); ok2 {
  31. return int64(i2)
  32. } else if i3, ok3 := num.(float32); ok3 {
  33. return int64(i3)
  34. } else if i4, ok4 := num.(string); ok4 {
  35. i64, _ := strconv.ParseInt(i4, 10, 64)
  36. //in, _ := strconv.Atoi(i4)
  37. return i64
  38. } else if i5, ok5 := num.(int16); ok5 {
  39. return int64(i5)
  40. } else if i6, ok6 := num.(int8); ok6 {
  41. return int64(i6)
  42. } else if i7, ok7 := num.(*big.Int); ok7 {
  43. in, _ := strconv.ParseInt(fmt.Sprint(i7), 10, 64)
  44. return int64(in)
  45. } else if i8, ok8 := num.(*big.Float); ok8 {
  46. in, _ := strconv.ParseInt(fmt.Sprint(i8), 10, 64)
  47. return int64(in)
  48. } else {
  49. return 0
  50. }
  51. }
  52. func IntAllDef(num interface{}, defaultNum int) int {
  53. if i, ok := num.(int); ok {
  54. return int(i)
  55. } else if i0, ok0 := num.(int32); ok0 {
  56. return int(i0)
  57. } else if i1, ok1 := num.(float64); ok1 {
  58. return int(i1)
  59. } else if i2, ok2 := num.(int64); ok2 {
  60. return int(i2)
  61. } else if i3, ok3 := num.(float32); ok3 {
  62. return int(i3)
  63. } else if i4, ok4 := num.(string); ok4 {
  64. in, _ := strconv.Atoi(i4)
  65. return int(in)
  66. } else if i5, ok5 := num.(int16); ok5 {
  67. return int(i5)
  68. } else if i6, ok6 := num.(int8); ok6 {
  69. return int(i6)
  70. } else if i7, ok7 := num.(*big.Int); ok7 {
  71. in, _ := strconv.Atoi(fmt.Sprint(i7))
  72. return int(in)
  73. } else if i8, ok8 := num.(*big.Float); ok8 {
  74. in, _ := strconv.Atoi(fmt.Sprint(i8))
  75. return int(in)
  76. } else {
  77. return defaultNum
  78. }
  79. }
  80. // Catch 出错拦截
  81. func Catch() {
  82. if r := recover(); r != nil {
  83. log.Println(r)
  84. for skip := 0; ; skip++ {
  85. _, file, line, ok := runtime.Caller(skip)
  86. if !ok {
  87. break
  88. }
  89. go log.Printf("%v,%v\n", file, line)
  90. }
  91. }
  92. }