package main import ( "fmt" "os" ) func main() { out := os.Stdout // Первый аргумент - путь, второй - опция if !(len(os.Args) == 2 || len(os.Args) == 3) { panic("usage go run main.go . [-f]") } path := os.Args[1] printFiles := len(os.Args) == 3 && os.Args[2] == "-f" err := dirTree(out, path, printFiles) if err != nil { panic(err.Error()) } // fmt.Println(path, printFiles, len(os.Args)) // fmt.Printf("%T\n", out, err) } func dirTree(file *os.File, path string, printFiles bool) error { var staticFile = file fmt.Println("Function tree") fmt.Println(file, path, printFiles) // Открыть текущую директорию dir, err := os.Open(path) if err != nil { // return err.Error() return err } defer dir.Close() // Получаем список файлов и папок files, err := dir.Readdir(-1) if err != nil { return err } // Выводим имена файлов и папок for _, file := range files { if file.IsDir() { fmt.Println("Directory: ", file.Name()) dirTree(staticFile, path, printFiles) } else { fmt.Println(file.Name()) } } /* file, err := os.Open("file.go") // For read access. if err != nil { log.Fatal(err) } */ return nil }