main.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. package main
  2. import (
  3. "errors"
  4. "fmt"
  5. "reflect"
  6. "strings"
  7. )
  8. func main() {
  9. type Address struct {
  10. City string
  11. State string
  12. }
  13. type User struct {
  14. Name string
  15. Age int
  16. Address *Address
  17. }
  18. var test = new(User)
  19. test.Name = "ra"
  20. fmt.Println(test)
  21. }
  22. // Struct2MgrStr 结构提转换为字符串
  23. func Struct2MgrStr(in interface{}, tag, connector string) (string, error) {
  24. var out string
  25. var val = reflect.ValueOf(in)
  26. if val.Kind() == reflect.Array || val.Kind() == reflect.Slice && !val.IsZero() {
  27. val = reflect.ValueOf(in.([]interface{})[0])
  28. }
  29. // 判断in是否为指针类型, 如果v为指针类型这将v替换为指针对应的值
  30. if val.Kind() == reflect.Ptr {
  31. val = val.Elem()
  32. }
  33. if val.Kind() != reflect.Struct && val.Kind() != reflect.Map {
  34. return "", errors.New("输入格式异常,不是Struct/Map类型数据")
  35. }
  36. var tp = val.Type()
  37. var args = make([]string, 0)
  38. for i := 0; i < val.NumField(); i++ {
  39. v := val.Field(i)
  40. if v.IsZero() {
  41. continue
  42. }
  43. if v.Kind() == reflect.Ptr {
  44. v = v.Elem()
  45. }
  46. fi := tp.Field(i)
  47. tagVal := fi.Tag.Get(tag)
  48. if tagVal == "-" || tagVal == "" {
  49. continue
  50. }
  51. if v.Kind() == reflect.String && v.String() == "" {
  52. continue
  53. }
  54. args = append(args, fmt.Sprintf("%s%s%v", tagVal, connector, v.Interface()))
  55. }
  56. out = strings.Join(args, " ")
  57. return out, nil
  58. }
  59. //package main
  60. //
  61. //import (
  62. // "fmt"
  63. // "github.com/robfig/cron/v3"
  64. // "os"
  65. // "time"
  66. //
  67. // "go.uber.org/zap"
  68. //)
  69. //
  70. //func main() {
  71. //
  72. // c := cron.New()
  73. //
  74. // c.Start()
  75. // // 初始化 logger
  76. // logger := initLogger()
  77. //
  78. // // 监听 SIGUSR1 信号
  79. //
  80. // EntryID, err := c.AddFunc("*/1 * * * *", func() {
  81. // logger.Info("cron running")
  82. //
  83. // logger = initLogger()
  84. // })
  85. // fmt.Println(time.Now(), EntryID, err)
  86. //
  87. // // 保持进程运行
  88. // select {}
  89. //}
  90. //
  91. //func initLogger() *zap.Logger {
  92. // // 获取当前日期
  93. // currentTime := time.Now()
  94. //
  95. // // 格式化日期作为文件名
  96. // filename := "log/app_" + currentTime.Format("2006-01-02-15-04-05") + ".log"
  97. //
  98. // _, err2 := os.Create(filename)
  99. // if err2 != nil {
  100. // panic(err2)
  101. //
  102. // }
  103. // // 配置日志输出路径
  104. // config := zap.NewProductionConfig()
  105. // config.OutputPaths = []string{filename, "stdout"}
  106. //
  107. // // 创建 logger 实例
  108. // logger, err := config.Build()
  109. // if err != nil {
  110. // panic(err)
  111. // }
  112. //
  113. // return logger
  114. //}