我有一组这样的结构:
func LoginUser(w http.ResponseWriter, req *http.Request) {
// do some check here
if err != nil {
ReturnErrorResponse(w, errors.LoginError)
return
}
// do some check here
if err != nil {
ReturnErrorResponse(w, errors.BannedUserError)
return
}
//success
}
我想知道是否有可能摆脱这些return
并以某种方式将它们嵌入到ReturnErrorResponse
函数中?
因此,如果发生错误,我会返回带有错误代码的JSONified响应并进行裸露返回。
答案 0 :(得分:1)
可以通过拨打panic()
来支持,例如在ReturnErrorResponse()
函数中(在发回错误之后),但它既不惯用也不高效。
使用panic()
当然需要在延迟功能中调用recover()
,这可以在一个地方完成,例如在"主人"处理程序传递给http.ListenAndServe()
。
你正在做的是正确的方法。请勿使用panic()
。