func treedir(fpath string){ // 获取fileinfo if finfo,err := os.Stat(fpath); err == nil { // 判断是不是目录 如果不是目录而是文件 打印文件path并跳出递归 if !finfo.IsDir() { fmt.Println(fpath) return }else{ // 是目录的情况 打印目录path fmt.Println(fpath) f,_ := os.Open(fpath) // 通过目录path open一个file defer f.Close() names,_ := f.Readdirnames(0) // 通过file的Readdirnames 拿到当前目录下的所有filename for _,name := range names{ newpath := path.Join(fpath,name) // 遍历names 拼接新的fpath treedir(newpath) // 递归 } } } }