将目录中所有.go文件进行go fmt
代码以及使用方法:https://github.com/lzw730/gofmtAllDir
package mainimport ( "flag" "fmt" "io/ioutil" "log" "os" "os/exec" "path/filepath" "strings")//获取指定目录及所有子目录下的所有文件,可以匹配后缀过滤。func WalkDir(dirPth string) (dirs []string, err error) { dirs = make([]string, 0, 20) //遍历目录 err = filepath.Walk(dirPth, func(dirname string, fi os.FileInfo, err error) error { if !fi.IsDir() { return nil } //将目录路径改写成正确格式 if dirname != "./" { dirname = "./" + strings.Replace(dirname, "\\", "/", -1) } dirs = append(dirs, dirname) return nil }) return dirs, err}//基于windows,执行go fmt命令func goFmtDirs(path string) { cmd := exec.Command("cmd", "/C", "go fmt", path) stdout, err := cmd.StdoutPipe() //获取输出对象,可以从该对象中读取输出结果 if err != nil { log.Fatal(err) } //保证关闭输出流 defer stdout.Close() //运行命令 if err := cmd.Start(); err != nil { log.Fatal(err) } // 读取输出结果 if opBytes, err := ioutil.ReadAll(stdout); err != nil { log.Fatal(err) } else { fmt.Print(string(opBytes)) }}func main() { path := flag.String("path", "./", "The dir path") dirs, err := WalkDir(*path) if err != nil { log.Fatal(err) } for _, v := range dirs { goFmtDirs(string(v)) }}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。