package main import ( "reflect" "fmt" ) type Test struct { fn interface{} args []reflect.Value } func foo(t Test) { reflect.ValueOf(t.fn).Call(t.args) } func bar(i, j int) { fmt.Println(i+j) } func main() { f := bar x, y := 3, 5 arg := []reflect.Value{reflect.ValueOf(x), reflect.ValueOf(y)} test := Test{ fn: f, args: arg, } foo(test) }