我有以下代码:
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中被称为回调?
答案 0 :(得分:4)
您还可以尝试返回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
}
}
答案 1 :(得分:3)
一种方法是在loopThroughDirs
内匿名声明main
:
func main() {
service, err := storage.New(client)
...
filepath.Walk(*dirName, func(path string, fileInfo os.FileInfo, err error) error {
...do something with service...
return nil
})
}