gpt4 book ai didi

go - 如何在 Golang Walk 中提前终止?

转载 作者:IT王子 更新时间:2023-10-29 00:39:07 24 4
gpt4 key购买 nike

如果可能的话,让 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com