如何将映射传递到Go中的回调函数

如何将映射传递到Go中的回调函数,go,Go,我正试图编写一个Go程序来遍历一个目录,找到某个文件并将该信息存储在地图中。这是我到目前为止所拥有的。 我不知道如何将Map传递给visit函数,因为它是一个回调函数 .. type MyFile struct { Name string FilePath string FileMD5Hash [16]byte } func visit(path string, f os.FileInfo, err error) error { fileNa

我正试图编写一个Go程序来遍历一个目录,找到某个文件并将该信息存储在地图中。这是我到目前为止所拥有的。 我不知道如何将Map传递给visit函数,因为它是一个回调函数

..
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)
}

将映射传递给返回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)
}

将映射传递给返回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)
}
你可以写

func (map Map) visit(path string, f os.FileInfo, err error) error {
...//Do something with map 
}
var mymap Map

err := filepath.Walk(path, mymap.visit) //mymap.visit express 'func(path string, f os.FileInfo, err error) error' same as visit just with mymap evaluated
它叫

你可以写

func (map Map) visit(path string, f os.FileInfo, err error) error {
...//Do something with map 
}
var mymap Map

err := filepath.Walk(path, mymap.visit) //mymap.visit express 'func(path string, f os.FileInfo, err error) error' same as visit just with mymap evaluated

它叫

我看你是新来的,你不必感谢,如果你觉得答案有用就接受吧我看你是新来的,你不必感谢,如果你觉得答案有用就接受吧