请检查它,我不知道它是否想要什么。因为我不知道你到底想要什么。
package mainimport ( "fmt" "reflect")func A() { fmt.Println("A")}func B(A int) { fmt.Println("B", A)}func C(A string, B float32) { fmt.Println("C", A, B)}func main() { f := []interface{}{A, B, C} f[0].(func())() f[1].(func(int))(15) f[2].(func(string, float32))("TEST", 90) fmt.Println("n******* another thing ******") for a, v := range f { v := reflect.TypeOf(v) fmt.Println("#######", a) fmt.Println("num param :", v.NumIn()) for i := 0; i < v.NumIn(); i++ { fmt.Println("param :", i, "type is ", v.In(i)) } }}在Go
Playground上检查
在这里,我有另一个使用反射调用的示例
package main import ( "fmt" "reflect" ) func A() { fmt.Println("A") } func B(A int) { fmt.Println("B", A) } func C(A string, B float32) { fmt.Println("C", A, B) } func main() { f := []interface{}{A, B, C} f[0].(func())() f[1].(func(int))(15) f[2].(func(string, float32))("TEST", 90) fmt.Println("n******* calling with reflect ******") for a, v := range f { v := reflect.TypeOf(v) //calling the function from reflect val := reflect.ValueOf(f[a]) params := make([]reflect.Value, v.NumIn()) if v.NumIn() == 1 { params[0] = reflect.ValueOf(1564) } else if v.NumIn() == 2 { params[0] = reflect.ValueOf("Test FROM reflect") params[1] = reflect.ValueOf(float32(123456)) } val.Call(params) } }在Go
Playground上检查



