登录
首页 >  Golang >  Go问答

在 Decode(&struct{}{}) 中嵌套结构使用双大括号

来源:stackoverflow

时间:2024-02-09 10:30:43 333浏览 收藏

大家好,今天本人给大家带来文章《在 Decode(&struct{}{}) 中嵌套结构使用双大括号》,文中内容主要涉及到,如果你对Golang方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!

问题内容

我在一些代码中有这个函数。 struct 中有助于确定它不是两个 JSON 的双大括号是什么?它是如何工作的?

func readJSON(w http.ResponseWriter,r *http.Request,data interface{}) error {
    maxBytes := 1024 * 1024 
    r.Body = http.MaxBytesReader(w,r.Body,int64(maxBytes))
    dec := json.NewDecoder(r.Body)
    dec.DisallowUnknownFields()
    err := dec.Decode(data)

    if err != nil {
        return err
    }

    err = dec.Decode(&struct{}{})
    if err != io.EOF {
        return errors.New("Body must Only contain 1 json ")
    }
    
    return nil
}

正确答案


让我们分解一下:

  • struct{} 是一种类型:没有字段的结构。
  • struct{}{} 是一个文字值:上述类型的新实例。
  • &struct{}{} 是指向上述文字值的指针。

通过尝试第二次解码 JSON,它确认正文在第一个 JSON 文档之后没有第二个 JSON 文档,例如:

{
  "foo": "bar"
}
{
  "foo": "qux"
}

终于介绍完啦!小伙伴们,这篇关于《在 Decode(&struct{}{}) 中嵌套结构使用双大括号》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>