我目前有以下代码
func (r *Router) Get(path string, controller interface{}) {
...
t := reflect.TypeOf(controller)
...
}
这被称为进行以下
Route.Get("/", controllers.Test.IsWorking)
第二个论点基本上是这个
type Test struct {
*Controller
Name string
}
func (t Test) IsWorking() {
}
type Controller struct {
Method string
Request *http.Request
Response http.ResponseWriter
Data map[interface{}]interface{}
}
我想得到函数引用的结构。创建一个该类型的新结构并调用该函数,例如
控制器。测试。正在工作的
创建一个测试结构并调用IsWorking()
要制作一个指向接口中新分配的类型结构的新指针,只需要
newController := reflect.New(reflect.TypeOf(controller)).Interface()
或者先在新实例上设置一个值:
newController := reflect.New(reflect.TypeOf(controller))
newController.Elem().FieldbyName("Method").Set(reflect.ValueOf("GET"))
如果您想创建一个指向结构的指针并调用IsWorking
方法,它看起来像
t := reflect.New(reflect.TypeOf(Test{}))
t.MethodByName("IsWorking").Call(nil)