从函数类型获取结构



我目前有以下代码

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)

相关内容

  • 没有找到相关文章

最新更新