首页 > 文章列表 > 如何在 Golang 回调函数中传递变量?

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

golang
323 2023-03-08

问题内容

我有以下代码:

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 inside loopThroughDirs()。我该怎么做呢?

PS:loopThroughDirs里面的函数filepath.Walk()在 Go 中叫回调吗?

正确答案

您也可以尝试返回一个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
    }
}