package main import ( "fmt" "reflect" "log" ) func main() { //调用无参方法 reflectInterface(testReflectParam,nil) //调用有参方法 reflectInterface(testReflectParam2,getValues(5,"Hello")) } //根据参数获取对应的Values func getValues(param ...interface{}) []reflect.Value { vals := make([]reflect.Value,0,len(param)) for i := range param { vals = append(vals,reflect.ValueOf(param[i])) } return vals } func reflectInterface(funcInter interface{},paramsValue []reflect.Value) { v := reflect.ValueOf(funcInter) if v.Kind() != reflect.Func { log.Fatal("funcInter is not func") } values := v.Call(paramsValue) //方法调用并返回值 for i := range values { fmt.Println(values[i]) } } //无参方法 func testReflectParam() (string,string){ return "hello world","你好!" } //有参方法 func testReflectParam2(i int,s string) (int,string){ i++ return i,s }