当前位置: 首页 > 面试题库 >

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

郭俊拔
2023-03-14
问题内容

我有以下代码:

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中称为回调吗?


问题答案:

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


 类似资料:
  • 问题内容: 如何在Swift中传递C回调?考虑以下示例: 问题答案: 使用Swift 2.0,现在可以在纯Swift中设置回调了!请检查http://oleb.net/blog/2015/06/c-callbacks-in- swift/ 和Swift2无法调用类型类型为参数的’FSEventStreamCreate’

  • 问题内容: 我在工具栏中有大约10个QAction(此数字在运行时会有所不同),它们都会做相同的事情,但是使用不同的参数。我正在考虑将参数作为属性添加到QAction对象,然后,QAction的触发信号还将对象本身发送给回调函数,以便我可以获取该函数所需的参数。我实际上对此有2个问题: 能做到吗 有更好的方法吗? 问题答案: 您可以使用信号映射器发送动作对象本身。但是,最好仅发送一个标识符并在信号

  • 问题内容: 与Firebase问题相比,这更像是JavaScript关闭问题。在以下代码中,Firebase回调无法识别父作用域中的变量myArr。 问题答案: 回调函数可以很好地识别/修改。问题是,当执行标记为“不工作”的标签时,回调尚未触发。 让我们稍微更改一下代码: 现在,可能会更容易了解发生了什么。 您注册一个侦听器,该侦听器将调用添加到Firebase中的每个帖子 这将导致对服务器的调用

  • 问题内容: 我正在尝试通过jQuery AJAX调用预加载一些图像,但是在将(url)字符串传递到AJAX调用的成功函数内的函数时遇到了实际问题(如果有意义)。 这是我的代码,原样: 可以看到我(失败的)尝试将url传递到调用中- 最终得到了递增整数的值。不确定为什么或与这些东西有什么关系,也许是jpg文件的数量? …无论如何,它当然应该在我原始的urls数组中使用单个值。 感谢您的帮助-我似乎总

  • 问题内容: 我有一个用Java实现的javascript接口,该接口由Web视图中加载的javascript代码调用。 JS Inside webview: Java: 通过webview加载的字符串最终是: 我有一些想法: 一个。在JS中以字符串形式构建回调。 b。在将回调传递给Android.myFunction()之前,先调用回调的toString(); 我的问题是,最好的方法是什么?我希望

  • 问题内容: 将参数传递给已编译的代码: 结果是: 显示已通过的用户名。 目的: 为了防止每次测试代码时都需要手动构建和运行代码,目的是编写一个能够测试参数传递的测试。 尝试 运行以下测试: 结果是: 问题 它看起来像那样不能够这个参数传递给函数的结果是不是 问题答案: 根据我的评论,第一个值是可执行文件本身的(路径),因此应解决您的问题。您可以从标准包中查看标志测试,他们正在做类似的事情。 另外,