Sto cercando di estrarre la gerarchia di directory di una cartella in una struttura dati in linguaggio go. filepath.Walk
sembra essere la strada da percorrere, ma tutto quello che posso fare finora è stampare i nomi di file e cartelle. Ecco quello che sto usando:estrazione della gerarchia di directory utilizzando la lingua go
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)
}
}
questa stampa i nomi delle cartelle, come:
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
per struttura ad albero Avevo pensato di usare qualcosa come:
type File struct {
Name string
Content string
}
type Folder struct {
Name string
Files []File
Folders []Folder
}
ma naturalmente qualsiasi i suggerimenti sono benvenuti
Come posso convertirlo in una struttura ad albero in go? C'è un modo più semplice per farlo?
Ho la sensazione che la vostra risposta è vero, però non viene eseguito sul mio computer dicendo '2012/09/30 13:25:23 Atteso annidati pagine di cartelle in pagine exit status 1' – none
Non sai cosa potrebbe causare questo. Come ho detto, questo è un codice veloce e sporco per illustrare il concetto. Dovresti essere in grado di eseguire il debug e/o modificarlo da lì. –
Poiché il codice era più lungo di quanto mi aspettassi, ho deciso di seguire un'altra strada con il mio design. Nel frattempo lascerò la domanda aperta per un po 'nel caso qualcuno possa trovare una soluzione elegante. Grazie per l'aiuto. – none