温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

将目录中所有.go文件进行go fmt

发布时间:2020-07-18 10:52:46 来源:网络 阅读:933 作者:梁十八 栏目:编程语言

代码以及使用方法:https://github.com/lzw730/gofmtAllDir

package main

import (
    "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))
    }
}
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI