type.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package util
  2. import (
  3. "fmt"
  4. "math/rand"
  5. "reflect"
  6. "time"
  7. )
  8. // IsNull 判断是否为空字符串
  9. func IsNull(s string) string {
  10. if s == "" {
  11. return "0"
  12. }
  13. return s
  14. }
  15. // IsBlank 判断 reflect.Value 是否为空
  16. func IsBlank(value reflect.Value) bool {
  17. switch value.Kind() {
  18. case reflect.String:
  19. return value.Len() == 0
  20. case reflect.Bool:
  21. return !value.Bool()
  22. case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
  23. return value.Int() == 0
  24. case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
  25. return value.Uint() == 0
  26. case reflect.Float32, reflect.Float64:
  27. return value.Float() == 0
  28. case reflect.Interface, reflect.Ptr:
  29. return value.IsNil()
  30. }
  31. return reflect.DeepEqual(value.Interface(), reflect.Zero(value.Type()).Interface())
  32. }
  33. func GetNumString(num int64) string {
  34. if num < 10000 {
  35. return fmt.Sprintf("%v", num)
  36. } else if num >= 10000 && num < 100000000 {
  37. mean := float32(num) / float32(10000)
  38. str := fmt.Sprintf("%.1f", mean)
  39. return str + "万"
  40. } else {
  41. mean := float32(num) / float32(100000000)
  42. str := fmt.Sprintf("%.1f", mean)
  43. return str + "亿"
  44. }
  45. }
  46. func GetRandomString(l int) string {
  47. str := "0123456789"
  48. bytes := []byte(str)
  49. var result []byte
  50. r := rand.New(rand.NewSource(time.Now().UnixNano()))
  51. for i := 0; i < l; i++ {
  52. result = append(result, bytes[r.Intn(len(bytes))])
  53. }
  54. return string(result)
  55. }
  56. func GetTimePointer(t *time.Time) time.Time {
  57. if t == nil {
  58. return time.Now()
  59. } else {
  60. return *t
  61. }
  62. }