它会给出错误missing return at end of function
。我已尝试添加return nil
,return ""
,return c.String
以及其他几项,但均无效。
package main
import (
"github.com/hiteshmodha/goDevice"
"github.com/labstack/echo"
"net/http"
)
func main() {
e := echo.New()
e.Get("/", func(c *echo.Context, w http.ResponseWriter, r *http.Request) *echo.HTTPError {
deviceType := goDevice.GetType(r)
if deviceType == "Mobile" {
return c.String(http.StatusOK, "Mobile!")
} else if deviceType == "Web" {
return c.String(http.StatusOK, "Desktop!")
} else if deviceType == "Tab" {
return c.String(http.StatusOK, "Tablet!")
}
})
e.Run(":4444")
}
这与其他案例完全不同,例如here。
没有框架,它可以正常工作。
答案 0 :(得分:2)
此处的处理程序不是echo.Get
等待的原因,而是您获取此处的原因:panic: echo: unknown handler
。
要摆脱此错误,请将处理程序更改为以下内容:func(c *echo.Context) error
如果您需要从http.Request
内部访问handler
,可以使用*echo.Context
,其中包含*echo.Response
。{/ p>
工作解决方案:
e.Get("/", func(c *echo.Context) error {
deviceType := goDevice.GetType(c.Request())
if deviceType == "Mobile" {
return echo.NewHTTPError(http.StatusOK, "Mobile!")
} else if deviceType == "Web" {
return echo.NewHTTPError(http.StatusOK, "Desktop!")
} else if deviceType == "Tab" {
return echo.NewHTTPError(http.StatusOK, "Tablet!")
}
return echo.NewHTTPError(http.StatusNoContent, "Alien probe")
})
希望有所帮助