登录
首页 >  Golang >  Go问答

编写一个通用函数,用于接受任意函数和相关参数,并在后续执行时调用

来源:stackoverflow

时间:2024-02-07 16:45:23 454浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《编写一个通用函数,用于接受任意函数和相关参数,并在后续执行时调用》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

是否可以创建一个通用函数,它可以接受任何其他函数及其相关参数,这些参数稍后可以用来执行传递的函数。我有一个要求,我计划首先收集所有这些调用并维护这些“作业”的一些元数据,然后通过 go 例程稍后执行它们。

// some kind of job function 
func somecooljob(arg1 type1, arg2 type2) type3 {
    // do processing
    return "value of type3"
}

现在可以创建一个通用函数,它可以采用具有任何签名的任何函数。以前我在python中做过类似的实现,go中有什么方法吗?

func processor(someFunc, relatedArgs){
    // I will save some execution info/ tracking state for someFunc here

    // later I can do something like below in my code
    go someFunc(relatedArgs)
}

在 go 中是否有更好的方法来组织这个?还有其他实现方式吗?


正确答案


使用 closure 传递参数。

更改 processor 以采用不带参数的函数。

func processor(fn func()){
    go fn()
}

使用闭包传递函数和参数:

processor(func() { someCoolJob(arg1, arg2) })

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于Golang的相关知识,也可关注golang学习网公众号。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>