go递归打印指定目录下的所有文件及文件夹

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)  // 递归
                        }               
                }
        }
}