我在 Go 中创建递归函数以打印包含所有子目录和文件的目录时遇到问题。我在将当前文件或目录保存到结果时遇到了一些问题。以下代码仅打印 0 级目录。
func ListTree(path string, level int) (result string, err error) {
files, err := ioutil.ReadDir(path)
if err != nil {
return result, err
}
for idx, entry := range files {
result += fmt.Sprintf("\n%v/%v", MultiplyElement("\t", level), entry.Name())
if entry.IsDir() {
ListTree(path + "/" + entry.Name(),level+1)
}
}
return result, err
}
但是,当我在函数外部声明结果变量时(我知道那是糟糕的代码,仅用于测试),它工作得很好,但是调用函数后结果值没有被清除。
var result string
func ListTree(path string, level int) (string, error) {
files, err := ioutil.ReadDir(path)
if err != nil {
return result, err
}
for idx, entry := range files {
result += fmt.Sprintf("\n%v/%v", MultiplyElement("\t", level), entry.Name())
if entry.IsDir() {
ListTree(path + "/" + entry.Name(),level+1)
}
}
return result, err
}
我该如何解决这个问题?
皈依舞
不负相思意
相关分类