извлечение иерархии каталогов с использованием языка 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
}

но, конечно, любые предложения приветствуются.

Как я могу преобразовать это в древовидную структуру в го? Есть ли более простой способ сделать это?

Ответы на вопрос(3)

Ваш ответ на вопрос