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?