Golang - 为什么在ServeHTTP中发生此错误功能:反映:调用reflect.Value.Call为零值

时间:2014-09-02 03:29:40

标签: go

我的代码和错误消息位于:https://gist.github.com/WithGJR/a700e5d5bd35b5c8eef2

有人能解释一下为什么会出现这个错误以及如何修复它?感谢。

1 个答案:

答案 0 :(得分:0)

由于value.MethodByName(info.controllerMethodName)可能会返回无效方法,因此您应该检查method.IsValid()

当发生类似这样的事情时,你会开始添加一堆log.Println来查看发生了什么,直到引入适当的调试器。

//修改

router.Get("/", controllers.IndexController{}, "Index")

您传递了一个值,func (this *IndexController) Index()已在指针上定义,因此MethodByName无法正常工作,请将您的router.Get更改为:

router.Get("/", &controllers.IndexController{}, "Index")