作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
如果可能的话,让 Go 的 filepath.Walk
提前返回的惯用方法是什么?
我正在编写一个函数来查找给定名称的嵌套目录。使用 filepath.Walk
我无法在找到第一个匹配项后立即终止树遍历。
func (*RecursiveFinder) Find(needle string, haystack string) (result string, err error) {
filepath.Walk(haystack, func(path string, fi os.FileInfo, errIn error) (errOut error) {
fmt.Println(path)
if fi.Name() == needle {
fmt.Println("Found " + path)
result = path
return nil
}
return
})
return
}
最佳答案
您应该从 walkfunc 返回一个错误。为确保没有返回真正的错误,您可以只使用已知错误,例如 io.EOF
。
func Find(needle string, haystack string) (result string, err error) {
err = filepath.Walk(haystack,
filepath.WalkFunc(func(path string, fi os.FileInfo, errIn error) error {
fmt.Println(path)
if fi.Name() == needle {
fmt.Println("Found " + path)
result = path
return io.EOF
}
return nil
}))
if err == io.EOF {
err = nil
}
return
}
关于go - 如何在 Golang Walk 中提前终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36713248/
我是一名优秀的程序员,十分优秀!