您好,登錄后才能下訂單哦!
代碼以及使用方法: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))
}
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。