Go 传递接口对象而不声明结构

Go 传递接口对象而不声明结构,go,revel,Go,Revel,如何在不声明结构的情况下传递接口{}对象? 例如,当我使用Revel框架时,我想返回一个特定案例的错误 下面的例子不起作用,我试过各种约定都不起作用,正确的方法是什么 返回c.RenderJson(接口{“error”:“xyz”}) 如果我使用Revel框架构建服务器,那么向客户端返回错误的正确方法是什么 您不必事先声明命名的struct类型,只需使用: return c.RenderJson(struct{ Error string }{"xyz"}) 1。请尝试以下操作: return

如何在不声明结构的情况下传递
接口{}
对象? 例如,当我使用Revel框架时,我想返回一个特定案例的错误

  • 下面的例子不起作用,我试过各种约定都不起作用,正确的方法是什么

    返回c.RenderJson(接口{“error”:“xyz”})

  • 如果我使用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的新手,所以这是我第一次在这里看到它。它们被称为结构标记。这是通过反射使用它们的方式:。这里有一点一般性的解释: