fmt_plus.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package utils
  2. import (
  3. "fmt"
  4. "math/rand"
  5. "reflect"
  6. "strings"
  7. )
  8. //@author: [piexlmax](https://github.com/piexlmax)
  9. //@function: StructToMap
  10. //@description: 利用反射将结构体转化为map
  11. //@param: obj interface{}
  12. //@return: map[string]interface{}
  13. func StructToMap(obj interface{}) map[string]interface{} {
  14. obj1 := reflect.TypeOf(obj)
  15. obj2 := reflect.ValueOf(obj)
  16. data := make(map[string]interface{})
  17. for i := 0; i < obj1.NumField(); i++ {
  18. if obj1.Field(i).Tag.Get("mapstructure") != "" {
  19. data[obj1.Field(i).Tag.Get("mapstructure")] = obj2.Field(i).Interface()
  20. } else {
  21. data[obj1.Field(i).Name] = obj2.Field(i).Interface()
  22. }
  23. }
  24. return data
  25. }
  26. //@author: [piexlmax](https://github.com/piexlmax)
  27. //@function: ArrayToString
  28. //@description: 将数组格式化为字符串
  29. //@param: array []interface{}
  30. //@return: string
  31. func ArrayToString(array []interface{}) string {
  32. return strings.Replace(strings.Trim(fmt.Sprint(array), "[]"), " ", ",", -1)
  33. }
  34. func Pointer[T any](in T) (out *T) {
  35. return &in
  36. }
  37. func FirstUpper(s string) string {
  38. if s == "" {
  39. return ""
  40. }
  41. return strings.ToUpper(s[:1]) + s[1:]
  42. }
  43. func FirstLower(s string) string {
  44. if s == "" {
  45. return ""
  46. }
  47. return strings.ToLower(s[:1]) + s[1:]
  48. }
  49. // MaheHump 将字符串转换为驼峰命名
  50. func MaheHump(s string) string {
  51. words := strings.Split(s, "-")
  52. for i := 1; i < len(words); i++ {
  53. words[i] = strings.Title(words[i])
  54. }
  55. return strings.Join(words, "")
  56. }
  57. // 随机字符串
  58. func RandomString(n int) string {
  59. var letters = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")
  60. b := make([]rune, n)
  61. for i := range b {
  62. b[i] = letters[RandomInt(0, len(letters))]
  63. }
  64. return string(b)
  65. }
  66. func RandomInt(min, max int) int {
  67. return min + rand.Intn(max-min)
  68. }