извлечение иерархии каталогов с использованием языка go
Я пытаюсь извлечь иерархию каталогов папки в структуру данных на языке go.filepath.Walk
Кажется, это путь, но все, что я могу сделать, это напечатать имена файлов и папок. Вот'что ям с помощью:
func main() {
visit := func(path string, info os.FileInfo, err error) error {
if info.IsDir() {
fmt.Println("dir: ", path)
} else {
fmt.Println("file: ", path)
}
return nil
}
err := filepath.Walk("./", visit)
if err != nil {
log.Fatal(err)
}
}
это печатает названия папок как:
dir: folder1
file: folder1/file1.txt
file: folder1/file2.txt
file: folder1/file3.txt
file: folder1/file4.txt
dir: folder1/folder2
file: folder1/folder2/file5.txt
file: folder1/folder2/file6.txt
file: folder1/folder2/file7.txt
file: folder1/folder2/file8.txt
file: folder1/folder2/file9.txt
для древовидной структуры я подумал об использовании чего-то вроде:
type File struct {
Name string
Content string
}
type Folder struct {
Name string
Files []File
Folders []Folder
}
но, конечно, любые предложения приветствуются.
Как я могу преобразовать это в древовидную структуру в го? Есть ли более простой способ сделать это?