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 //}