value.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package util
  2. import (
  3. "crypto/md5"
  4. "encoding/hex"
  5. "io"
  6. "strings"
  7. "encoding/base64"
  8. "fmt"
  9. "crypto/rand"
  10. )
  11. //生成32位md5字串
  12. func GetMd5String(s string) string {
  13. h := md5.New()
  14. h.Write([]byte(s))
  15. return hex.EncodeToString(h.Sum(nil))
  16. }
  17. //生成Guid字串
  18. func UUIDString() string {
  19. b := make([]byte, 48)
  20. if _, err := io.ReadFull(rand.Reader, b); err != nil {
  21. return ""
  22. }
  23. return strings.ToUpper(GetMd5String(base64.URLEncoding.EncodeToString(b)))
  24. }
  25. func UUID() string {
  26. uuid := UUIDString()
  27. if "" == uuid {
  28. return ""
  29. }
  30. return fmt.Sprintf("%v-%v-%v-%v-%v", uuid[0:8], uuid[8:12], uuid[12:16], uuid[16:20], uuid[20:])
  31. }
  32. // TrimAryStringRepeat trim the s in every string in strs,
  33. // repeat is decide result string array whether allowed repeat,
  34. // false is don't allowed
  35. func TrimAryStringRepeat(strs []string, s string, repeat bool) []string {
  36. var strMap = map[string]bool{}
  37. var results = []string{}
  38. for _, str := range strs {
  39. val := strings.Trim(str, s)
  40. if len(val) < 1 {
  41. continue
  42. }
  43. if strMap[val] && !repeat {
  44. continue
  45. }
  46. strMap[val] = true
  47. results = append(results, val)
  48. }
  49. return results
  50. }
  51. // TrimAryInt trim the same int value in vals or which value equal to arg
  52. func TrimAryInt(vals []int, arg int) []int {
  53. var intMap = map[int]bool{}
  54. var result = []int{}
  55. for _, val := range vals {
  56. if intMap[val] {
  57. continue
  58. }
  59. intMap[val] = true
  60. result = append(result, val)
  61. }
  62. return result
  63. }
  64. // TrimAryInt trim the same int value int vals
  65. func TrimAryIntRepeat(vals []int) []int {
  66. var intMap = map[int]bool{}
  67. var result = []int{}
  68. for _, val := range vals {
  69. if intMap[val] {
  70. continue
  71. }
  72. intMap[val] = true
  73. result = append(result, val)
  74. }
  75. return result
  76. }