filepath.Walk() - 我可以提供哪些目录不要走的规则?

ufk*_*ufk 8 directory go

我正在使用Go 1.7rc1编写GoLang应用程序.

现在我想找到特定路径中的所有go文件.除此之外,我不想走一些目录..例如..隐藏的目录,如.git.

有没有办法提供Walk()一些规则?或..是否有不同的库提供这些功能?

现在这是我的代码:

func visit(path string, f os.FileInfo, err error) error {
    fmt.Printf("Visited: %s\n", path)
    return nil
}

func main() {
    filepath.Walk(path,visit)
}
Run Code Online (Sandbox Code Playgroud)

任何有关该问题的信息将不胜感激.谢谢!

Cer*_*món 10

您可以通过从访问函数返回错误filepath.SkipDir来跳过目录.

以下是跳过.git目录的方法:

func visit(path string, f os.FileInfo, err error) error {
    if f.IsDir() && f.Name() == ".git" {
        return filepath.SkipDir
    }
    fmt.Printf("Visited: %s\n", path)
    return nil
}
Run Code Online (Sandbox Code Playgroud)

f.IsDir()需要进行测试以避免跳过包含名为".git"的普通文件的目录的其余部分.