如题目内容,controller 文件夹下有各种 controller,只需在 conf/routes 中对应路由表,各个 controller 实例会自动生成。 revel/controller.go中:
func RegisterController(c interface{}, methods []*MethodType) {
// De-star the controller type
// (e.g. given TypeOf((*Application)(nil)), want TypeOf(Application))
var t reflect.Type = reflect.TypeOf(c)
var elem reflect.Type = t.Elem()
// De-star all of the method arg types too.
for _, m := range methods {
m.lowerName = strings.ToLower(m.Name)
for _, arg := range m.Args {
arg.Type = arg.Type.Elem()
}
}
controllers[strings.ToLower(elem.Name())] = &ControllerType{
Type: elem,
Methods: methods,
ControllerIndexes: findControllers(elem),
}
TRACE.Printf("Registered controller: %s", elem.Name())
}
RegisterController 方法在哪儿调用啊,没找到。 我很想知道参数 c interface{}的 type 是如何赋值的。