创建通用函数,该函数可以接受具有相关参数的任何函数以供以后执行

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


// some kind of job function 

func someCoolJob(arg1 type1, arg2 type2) type3 {

    // do processing

    return "value of type3"

}

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


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)

}

有没有更好的方法来组织这个?其他一些实现方式?


慕斯王
浏览 72回答 1
1回答

慕少森

通过使用闭包传递参数。更改processor为不带参数的函数。func processor(fn func()){    go fn()}使用闭包传递函数和参数:processor(func() { someCoolJob(arg1, arg2) })
打开App,查看更多内容
随时随地看视频慕课网APP