num.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. package util
  2. import (
  3. "math/rand"
  4. "strconv"
  5. "time"
  6. )
  7. func Uint642String(num uint64) string {
  8. return strconv.FormatUint(num, 10)
  9. }
  10. func StringSecToDuration(str string, defaultValue ...string) time.Duration {
  11. result := String2Int64(str)
  12. if result == 0 {
  13. if defaultValue == nil || len(defaultValue) == 0 {
  14. return 0
  15. }
  16. result = String2Int64(defaultValue[0])
  17. }
  18. return time.Second * time.Duration(result)
  19. }
  20. func String2Uint64(nums string, defaultValue ...uint64) uint64 {
  21. loadDefaultValue := func() uint64 {
  22. if defaultValue == nil || len(defaultValue) == 0 {
  23. return 0
  24. }
  25. return defaultValue[0]
  26. }
  27. if nums == "" {
  28. return loadDefaultValue()
  29. }
  30. num, err := strconv.ParseUint(nums, 10, 64)
  31. if err != nil {
  32. // 异常,直接
  33. return loadDefaultValue()
  34. }
  35. return num
  36. }
  37. func Int642String(num int64) string {
  38. return strconv.FormatInt(num, 10)
  39. }
  40. func String2Int64(nums string, defaultValue ...int64) int64 {
  41. loadDefaultValue := func() int64 {
  42. if defaultValue == nil || len(defaultValue) == 0 {
  43. return 0
  44. }
  45. return defaultValue[0]
  46. }
  47. if nums == "" {
  48. return loadDefaultValue()
  49. }
  50. num, err := strconv.ParseInt(nums, 10, 64)
  51. if err != nil {
  52. return loadDefaultValue()
  53. }
  54. return num
  55. }
  56. func String2Int(nums string, defaultValue ...int) int {
  57. loadDefaultValue := func() int {
  58. if defaultValue == nil || len(defaultValue) == 0 {
  59. return 0
  60. }
  61. return defaultValue[0]
  62. }
  63. if nums == "" {
  64. return loadDefaultValue()
  65. }
  66. num, err := strconv.ParseInt(nums, 10, 64)
  67. if err != nil {
  68. return loadDefaultValue()
  69. }
  70. return int(num)
  71. }
  72. func Int2String(num int) string {
  73. return strconv.FormatInt(int64(num), 10)
  74. }
  75. func String2Bool(str string, defaultValue ...bool) bool {
  76. loadDefaultValue := func() bool {
  77. if defaultValue == nil || len(defaultValue) == 0 {
  78. return false
  79. }
  80. return defaultValue[0]
  81. }
  82. b, err := strconv.ParseBool(str)
  83. if err != nil {
  84. return loadDefaultValue()
  85. }
  86. return b
  87. }
  88. func String2Float64(str string, defaultValue ...float64) float64 {
  89. loadDefaultValue := func() float64 {
  90. if defaultValue == nil || len(defaultValue) == 0 {
  91. return 0
  92. }
  93. return defaultValue[0]
  94. }
  95. b, err := strconv.ParseFloat(str, 64)
  96. if err != nil {
  97. return loadDefaultValue()
  98. }
  99. return b
  100. }
  101. // 除固定值,保留固定小数位
  102. func Float642String(num float64, saveDecimalPoint int) string {
  103. return strconv.FormatFloat(num, 'f', saveDecimalPoint, 64)
  104. }
  105. /**
  106. 比率限制,如果=0关闭,如果等于100全量
  107. */
  108. func Rate100(threshold int64) bool {
  109. return RateInNum(threshold, 100)
  110. }
  111. /**
  112. 比率限制,如果=0关闭,如果等于100全量
  113. */
  114. func RateInNum(threshold int64, totalSize int64) bool {
  115. return threshold > rand.Int63n(totalSize) // 0-99
  116. }