如果可能的话,让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
}
Run Code Online (Sandbox Code Playgroud)
您应该从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
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1568 次 |
| 最近记录: |