У меня проблемы с созданием рекурсивной функции в 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
}
Как я могу исправить эту проблему?