Go 传递接口对象而不声明结构
如何在不声明结构的情况下传递Go 传递接口对象而不声明结构,go,revel,Go,Revel,如何在不声明结构的情况下传递接口{}对象? 例如,当我使用Revel框架时,我想返回一个特定案例的错误 下面的例子不起作用,我试过各种约定都不起作用,正确的方法是什么 返回c.RenderJson(接口{“error”:“xyz”}) 如果我使用Revel框架构建服务器,那么向客户端返回错误的正确方法是什么 您不必事先声明命名的struct类型,只需使用: return c.RenderJson(struct{ Error string }{"xyz"}) 1。请尝试以下操作: return
接口{}
对象?
例如,当我使用Revel框架时,我想返回一个特定案例的错误
您不必事先声明命名的
struct
类型,只需使用:
return c.RenderJson(struct{ Error string }{"xyz"})
1。请尝试以下操作:
return c.RenderJson(map[string]string{"error": "xyz"})
RenderJson
接受一个接口,这意味着您可以传递任何信息。您不需要显式地强制转换到接口,尽管这样做就像
interface{}(map[string]string{"error": "xyz"})
两个人。我不确定,但我倾向于使用一个helper函数,它接受错误字符串(或错误类型)和状态代码,并为我进行处理
return HandleError(c, "xyz is not valid", 400)
然后HandleError
只创建并写入错误
如果你要处理一般的错误,我不知道你为什么不做一个错误类型
type RequestError struct {
Error string `json:"error_message"`,
StatusCode int `json:"status_code"`,
...
}
那正是我想要的,谢谢。你能把我重定向到一个源代码吗?这个源代码告诉我结构中的
json:“error\u message”
到底是什么意思?我是Golang的新手,所以这是我第一次在这里看到它。它们被称为结构标记。这是通过反射使用它们的方式:。这里有一点一般性的解释: