Verzeichnishierarchie mit go-Sprache extrahieren

Ich versuche, die Verzeichnishierarchie eines Ordners in eine Datenstruktur in der Sprache go zu extrahieren.filepath.Walk Es scheint der richtige Weg zu sein, aber alles, was ich bisher tun kann, ist, die Namen von Dateien und Ordnern auszudrucken. Folgendes verwende ich:

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)
    }
}

Dies druckt die Namen von Ordnern wie:

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

Für die Baumstruktur dachte ich über etwas wie:

type File struct {
    Name string
    Content string
}

type Folder struct {
    Name    string
    Files   []File
    Folders []Folder
}

aber natürlich sind alle Vorschläge willkommen.

Wie kann ich das in eine Baumstruktur in go konvertieren? Gibt es einen einfacheren Weg, dies zu tun?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage