创建通用函数,它可以接受任何函数及其相关参数供以后执行

create generic function which can accept any function with its related args for later execution

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

// 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)
}

在 go 中有更好的组织方式吗?其他实现方式 ?

使用 closure.

传递参数

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

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

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

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