一尘不染

如何在Golang回调函数中传递变量?

go

我有以下代码:

func loopThroughDirs(path string, fileInfo os.FileInfo, err error) error {
    ...do something with service...
    return nil
}

func main() {
    service, err := storage.New(client)
    ...
    filepath.Walk(*dirName, loopThroughDirs)
}

我要解决的问题是这个,我要在service 里面 使用loopThroughDirs()。我该怎么做呢?

PS:loopThroughDirs内部的函数filepath.Walk()在Go中称为回调吗?


阅读 313

收藏
2020-07-02

共1个答案

一尘不染

您也可以尝试返回一个WalkFunc函数:

func main() {
    service, err := storage.New(client)
    ...
    filepath.Walk(*dirName, getWalkFunc(service))
}

func getWalkFunc(service storage.Service) filepath.WalkFunc {
    return func(path string, fileInfo os.FileInfo, err error) error {
        // ...do something with service...
        return nil
    }
}
2020-07-02