GoLang正在打印目录树

GoLang正在打印目录树,go,Go,在Go to print目录及其所有子目录和文件中创建递归函数时遇到问题。我在将当前文件或目录保存到结果时遇到一些问题。以下代码仅打印0级目录 func列表树(路径字符串,级别int)(结果字符串,错误){ 文件,err:=ioutil.ReadDir(路径) 如果错误!=零{ 返回结果,错误 } 对于idx,条目:=范围文件{ 结果+=fmt.Sprintf(“\n%v/%v”,多行(“\t”,level),entry.Name()) if entry.IsDir(){ 列表树(路径+“/”+

在Go to print目录及其所有子目录和文件中创建递归函数时遇到问题。我在将当前文件或目录保存到结果时遇到一些问题。以下代码仅打印0级目录

func列表树(路径字符串,级别int)(结果字符串,错误){
文件,err:=ioutil.ReadDir(路径)
如果错误!=零{
返回结果,错误
}
对于idx,条目:=范围文件{
结果+=fmt.Sprintf(“\n%v/%v”,多行(“\t”,level),entry.Name())
if entry.IsDir(){
列表树(路径+“/”+entry.Name(),级别+1)
}
}
返回结果,错误
}
但是,当我在函数外部声明结果变量时(我知道这是错误的代码,只是为了测试),它工作得很好,但是调用函数后结果值不会被清除

var结果字符串
func列表树(路径字符串,级别int)(字符串,错误){
文件,err:=ioutil.ReadDir(路径)
如果错误!=零{
返回结果,错误
}
对于idx,条目:=范围文件{
结果+=fmt.Sprintf(“\n%v/%v”,多行(“\t”,level),entry.Name())
if entry.IsDir(){
列表树(路径+“/”+entry.Name(),级别+1)
}
}
返回结果,错误
}

如何解决此问题?

在第一个代码示例中,您递归调用了
ListTree
,但没有使用其返回值,因此在级别>0的调用中计算并返回的任何内容都会被丢弃在地板上

相反,请尝试:

result += ListTree(path + "/" + entry.Name(),level+1)

或者,使用遍历目录树。

您可以使用filepath.Walk

filepath.Walk("/path/to/folder", func(name string, info os.FileInfo, err error) error {
    fmt.Println(name)
    return nil
})