123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- package main
- import (
- "errors"
- "fmt"
- "reflect"
- "strings"
- )
- func main() {
- type Address struct {
- City string
- State string
- }
- type User struct {
- Name string
- Age int
- Address *Address
- }
- var test = new(User)
- test.Name = "ra"
- fmt.Println(test)
- }
- // Struct2MgrStr 结构提转换为字符串
- func Struct2MgrStr(in interface{}, tag, connector string) (string, error) {
- var out string
- var val = reflect.ValueOf(in)
- if val.Kind() == reflect.Array || val.Kind() == reflect.Slice && !val.IsZero() {
- val = reflect.ValueOf(in.([]interface{})[0])
- }
- // 判断in是否为指针类型, 如果v为指针类型这将v替换为指针对应的值
- if val.Kind() == reflect.Ptr {
- val = val.Elem()
- }
- if val.Kind() != reflect.Struct && val.Kind() != reflect.Map {
- return "", errors.New("输入格式异常,不是Struct/Map类型数据")
- }
- var tp = val.Type()
- var args = make([]string, 0)
- for i := 0; i < val.NumField(); i++ {
- v := val.Field(i)
- if v.IsZero() {
- continue
- }
- if v.Kind() == reflect.Ptr {
- v = v.Elem()
- }
- fi := tp.Field(i)
- tagVal := fi.Tag.Get(tag)
- if tagVal == "-" || tagVal == "" {
- continue
- }
- if v.Kind() == reflect.String && v.String() == "" {
- continue
- }
- args = append(args, fmt.Sprintf("%s%s%v", tagVal, connector, v.Interface()))
- }
- out = strings.Join(args, " ")
- return out, nil
- }
- //package main
- //
- //import (
- // "fmt"
- // "github.com/robfig/cron/v3"
- // "os"
- // "time"
- //
- // "go.uber.org/zap"
- //)
- //
- //func main() {
- //
- // c := cron.New()
- //
- // c.Start()
- // // 初始化 logger
- // logger := initLogger()
- //
- // // 监听 SIGUSR1 信号
- //
- // EntryID, err := c.AddFunc("*/1 * * * *", func() {
- // logger.Info("cron running")
- //
- // logger = initLogger()
- // })
- // fmt.Println(time.Now(), EntryID, err)
- //
- // // 保持进程运行
- // select {}
- //}
- //
- //func initLogger() *zap.Logger {
- // // 获取当前日期
- // currentTime := time.Now()
- //
- // // 格式化日期作为文件名
- // filename := "log/app_" + currentTime.Format("2006-01-02-15-04-05") + ".log"
- //
- // _, err2 := os.Create(filename)
- // if err2 != nil {
- // panic(err2)
- //
- // }
- // // 配置日志输出路径
- // config := zap.NewProductionConfig()
- // config.OutputPaths = []string{filename, "stdout"}
- //
- // // 创建 logger 实例
- // logger, err := config.Build()
- // if err != nil {
- // panic(err)
- // }
- //
- // return logger
- //}
|