我正在尝试编写一个 Go 程序来遍历目录并找到特定文件并将该信息存储在 Map 中。这是我到目前为止所拥有的。 我不确定如何将 Map 传递给访问函数,因为它是一个回调函数。
..
type MyFile struct {
Name string
FilePath string
FileMD5Hash [16]byte
}
func visit(path string, f os.FileInfo, err error) error {
fileName := f.Name()
if !f.IsDir() && strings.Contains(strings.ToLower(fileName), "myfile") {
df := parseFile(path)
fmt.Printf("Visited: %s [%x], %s, %s\n", df.FilePath)
}
return nil
}
func parseFile(path string)...
func check(e error) ...
func WalkDir(path string) {
err := filepath.Walk(path, visit)
fmt.Printf("filepath.Walk() returned %v\n", err)
}
最佳答案
将 Map 传递给返回 filepath.WalkFunc
的函数,然后将其传递给 filepath.Walk
。它是一个类似构造函数的东西。
func visit(map Map) filepath.WalkFunc {
return func(path string, f os.FileInfo, err error) error {
// do something with map
fileName := f.Name()
if !f.IsDir() && strings.Contains(strings.ToLower(fileName), "myfile") {
df := parseFile(path)
fmt.Printf("Visited: %s [%x], %s, %s\n", df.FilePath)
}
return nil
}
}
func WalkDir(path string) {
err := filepath.Walk(path, visit(map))
fmt.Printf("filepath.Walk() returned %v\n", err)
}
关于go - 如何将 Map 传递给 Go 中的回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34663992/