19 lines
380 B
Go
19 lines
380 B
Go
package async
|
|
|
|
import "reflect"
|
|
|
|
func Async(fn interface{}, args ...interface{}) func() {
|
|
fnValue := reflect.ValueOf(fn)
|
|
|
|
// Prepare the arguments
|
|
params := make([]reflect.Value, len(args))
|
|
for i, arg := range args {
|
|
params[i] = reflect.ValueOf(arg)
|
|
}
|
|
|
|
// Return a function that, when called, will invoke the original function
|
|
return func() {
|
|
fnValue.Call(params)
|
|
}
|
|
}
|