如何在不声明Struct的情况下传递Interface{}
对象?
例如,当我使用Revel框架时,我想在特定情况下返回错误。
以下示例无法正常工作,我尝试了各种约定没有效果,哪种方法正确?
return c.RenderJson(interface {“error”:“xyz”})
如果我使用Revel框架构建服务器,有什么方法可以向客户端返回错误?
答案 0 :(得分:4)
您之前不必声明名为struct
的类型,您只需使用:
return c.RenderJson(struct{ Error string }{"xyz"})
答案 1 :(得分:4)
对于1.请尝试以下操作:
return c.RenderJson(map[string]string{"error": "xyz"})
RenderJson
接受一个接口,这意味着你可以传递任何东西。您不需要显式转换为接口,但这可以像
interface{}(map[string]string{"error": "xyz"})
对于2.我不确定,但我倾向于有一个辅助函数,它接受错误字符串(或错误类型)和状态代码并为我处理。
return HandleError(c, "xyz is not valid", 400)
然后HandleError
只创建并写入错误。
如果你要处理一般的错误,我不知道为什么你不会犯错误类型,
type RequestError struct {
Error string `json:"error_message"`,
StatusCode int `json:"status_code"`,
...
}