Golang文件夹遍历Demo

2 minute read

主函数:

 1//传递一个string类型,在这里我们传入需要扫描的路径
 2func getFilelist(path string){
 3	//package_name:path/filepath
 4	//go doc filepath.Walk 查看这个函数的文档
 5	err:=filepath.Walk(path,func (path string,f os.FileInfo,err error) error {
 6		//如果f等于空,返回err错误
 7		if (f==nil){return err}
 8		//func IsDir() bool  // abbreviation for Mode().IsDir()
 9		if f.IsDir(){return nil}
10		println(path)
11		return nil
12	})
13	if err!=nil{
14		fmt.Printf("filepath.Walk() returned %v\n",err)
15	}
16}

main入口函数:

flag-命令行参数解析

在写命令行程序(工具、server)时,对命令参数进行解析是常见的需求。各种语言一般都会提供解析命令行参数的方法或库,以方便程序员使用。如果命令行参数纯粹自己写代码解析,对于比较复杂的,还是挺费劲的。在 go 标准库中提供了一个包:flag,方便进行命令行解析

注:区分几个概念

  1. 命令行参数(或参数):是指运行程序提供的参数
  2. 已定义命令行参数:是指程序中通过flag.Xxx等这种形式定义了的参数
  3. 非flag(non-flag)命令行参数(或保留的命令行参数):后文解释
1func main(){
2        flag.Parse()
3        root := flag.Arg(0)
4        getFilelist(root)
5}

运行实例:

1go run filepath.go f:\
2...