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

代码以及使用方法: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))
    }
}

原文地址:https://blog.51cto.com/5660061/2419673

时间: 2024-11-09 06:23:26

将目录中所有.go文件进行go fmt的相关文章

[Perl系列—] 1. 清空目录及目录中的所有文件

Perl 删除单个文件和目录 Perl 删除单个文件的语法是: unlink 举例来说, 删除 D 盘 temp 目录下的 test.txt 的写法就是: unlink "D:/temp/test.txt" 如果要删除这个目录中所有的文件的话(不包含子目录) unlink glob "D:/temp/*" Perl 删除单个目录的语法是:  rm 类似, 删除上面的temp 目录的写法就可以是: rmdir "D:/temp" 看起来很简单, 但

/proc 目录中的主要文件的说明

/proc 目录中的主要文件的说明 文件或目录名称 描 述 apm 高级电源管理信息 cmdline 文件给出了内核启动的命令行 CPUinfo 中央处理器信息 devices 可以用到的设备(块设备/字符设备) dma 显示当前使用的 DMA 通道 filesystems 核心配置的文件系统 ioports 当前使用的 I/O 端口 interrupts 文件的每一行都有一个保留的中断 kcore 系统物理内存映像 kmsg 核心输出的消息,被送到日志文件 mdstat 文件包含了由 md 设

在/proc文件系统中增加一个目录hello,并在这个目录中增加一个文件world,文件的内容为hello world

一.题目 编写一个内核模块,在/proc文件系统中增加一个目录hello,并在这个目录中增加一个文件world,文件的内容为hello world.内核版本要求2.6.18 ? 二.实验环境 物理主机:win7 64bit, i5双核,8G内存 虚拟机:Vmware Workstation 10.0.2 虚拟主机: CentOs-5.11,内核2.6.18 ? 三.实验思路 在着手解决问题之前,我在网上查阅了一些资料,大多是关于模块的介绍.linux内核采用的是模块化编程,这样可以很容易的添加或

通过assets像安卓程序目录中导入数据库文件出现错误的解决办法

错误提示如下,下面的错误信息 08-13 07:36:31.396: W/System.err(9814): java.io.IOException 08-13 07:36:31.416: W/System.err(9814):  at android.content.res.AssetManager.readAsset(Native Method) 08-13 07:36:31.416: W/System.err(9814):  at android.content.res.AssetMana

列出一个目录中的所有文件

file/ls1.c 1 #include "apue.h" 2 #include <dirent.h> 3 int 4 main(int argc, char *argv[]) 5 { 6 DIR *dp; 7 struct dirent *dirp; 8 if (argc != 2) 9 err_quit("usage: ls directory_name"); 10 if ((dp = opendir(argv[1])) == NULL) 11 e

dos命令删除代码目录中的.svn文件

当需要删除代码目录中的.svn文件时,可以用一句dos命令轻松搞定 for /r "删除.svn的目录" %i in (.svn) do rd /s /q %i

将一个目录中所有PDF文件合并到一个新的PDF文件中

将一个目录中所有PDF文件合并到一个新的PDF文件中 using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System;using System.Collections.Generic;using System.Text;using Syst

找出目录中相同的文件

这个功能,笔者是使用python实现.执行脚本后,根据提示手动输入目录的路径.脚本计算该目录及其子目录中所包含文件的md5值,比对md5值,从而打印出md5值相同的文件路径. python完整脚本如下: # -*- coding: utf-8 -*- def calmd5(filename): import hashlib f = open(filename,'rb') m = hashlib.md5() m.update(f.read()) hash = m.hexdigest() retur

如何将打开res/raw目录中的数据库文件?

在Android中不能直接打开res /raw目录中的数据库文件,而需要在程序第一次启动时将该文件复制到手机内存或SD卡的某个目录中, 然后再打开该数据库文件. 复制的基本方法是使用getResources().openRawResource方法获得res/raw目录中资源的 InputStream对象, 然后将该InputStream对象中的数据写入其他的目录中相应文件中. 在Android SDK中可以使用SQLiteDatabase.openOrCreateDatabase方法来打开任意目