gin使用自定义结构绑定表单数据的示例代码

 更新时间:2020年11月02日 15:42:01   作者:晨梦~思雨  
这篇文章主要介绍了gin使用自定义结构绑定表单数据的示例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

以下示例使用自定义结构

type StructA struct {
  FieldA string `form:"field_a"`
}
 
type StructB struct {
  NestedStruct StructA
  FieldB string `form:"field_b"`
}
 
type StructC struct {
  NestedStructPointer *StructA
  FieldC string `form:"field_c"`
}
 
type StructD struct {
  NestedAnonyStruct struct {
    FieldX string `form:"field_x"`
  }
  FieldD string `form:"field_d"`
}
 
func GetDataB(c *gin.Context) {
  var b StructB
  c.Bind(&b)
  c.JSON(200, gin.H{
    "a": b.NestedStruct,
    "b": b.FieldB,
  })
}
 
func GetDataC(c *gin.Context) {
  var b StructC
  c.Bind(&b)
  c.JSON(200, gin.H{
    "a": b.NestedStructPointer,
    "c": b.FieldC,
  })
}
 
func GetDataD(c *gin.Context) {
  var b StructD
  c.Bind(&b)
  c.JSON(200, gin.H{
    "x": b.NestedAnonyStruct,
    "d": b.FieldD,
  })
}
 
func main() {
  r := gin.Default()
  r.GET("/getb", GetDataB)
  r.GET("/getc", GetDataC)
  r.GET("/getd", GetDataD)
 
  r.Run()
}

运行示例:

$ curl "http://localhost:8080/getb?field_a=hello&field_b=world"
{"a":{"FieldA":"hello"},"b":"world"}
$ curl "http://localhost:8080/getc?field_a=hello&field_c=world"
{"a":{"FieldA":"hello"},"c":"world"}
$ curl "http://localhost:8080/getd?field_x=hello&field_d=world"
{"d":"world","x":{"FieldX":"hello"}}

 

注意:不支持以下样式结构

type StructX struct {
  X struct {} `form:"name_x"` // HERE have form
}
 
type StructY struct {
  Y StructX `form:"name_y"` // HERE have form
}
 
type StructZ struct {
  Z *StructZ `form:"name_z"` // HERE have form
}

总之,现在只支持现在没有form标签的自定义结构

到此这篇关于gin使用自定义结构绑定表单数据的示例代码的文章就介绍到这了,更多相关gin绑定表单数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • golang:json 反序列化的[]和nil操作

    golang:json 反序列化的[]和nil操作

    这篇文章主要介绍了golang:json 反序列化的[]和nil操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Golang中time.After的使用理解与释放问题

    Golang中time.After的使用理解与释放问题

    这篇文章主要给大家介绍了关于Golang中time.After的使用理解与释放问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • 一文带你掌握Go语言中的文件读取操作

    一文带你掌握Go语言中的文件读取操作

    这篇文章主要和大家分享一下Go语言中的文件读取操作,文中的示例代码讲解详细,对我们学习Go语言有一定的帮助,需要的小伙伴可以参考一下
    2022-12-12
  • golang 获取字符串长度的案例

    golang 获取字符串长度的案例

    这篇文章主要介绍了golang 获取字符串长度的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • GO语言基本类型String和Slice,Map操作详解

    GO语言基本类型String和Slice,Map操作详解

    这篇文章主要为大家介绍了GO语言基本类型String和Slice,Map操作示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • mac下golang安装了windows编译环境后编译变慢

    mac下golang安装了windows编译环境后编译变慢

    这篇文章主要介绍了mac下golang安装了windows编译环境后编译变慢的处理方法,非常的简单,有相同问题的小伙伴可以参考下。
    2015-04-04
  • Go内存节省技巧简单实现方法

    Go内存节省技巧简单实现方法

    这篇文章主要为大家介绍了Go内存节省技巧简单实现方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • Golang实现gRPC的Proxy的原理解析

    Golang实现gRPC的Proxy的原理解析

    gRPC是Google开始的一个RPC服务框架, 是英文全名为Google Remote Procedure Call的简称,广泛的应用在有RPC场景的业务系统中,这篇文章主要介绍了Golang实现gRPC的Proxy的原理,需要的朋友可以参考下
    2021-09-09
  • 一文带你搞懂golang中内存分配逃逸分析

    一文带你搞懂golang中内存分配逃逸分析

    这篇文章主要带大家一起学习一下golang中内存分配逃逸分析,文中的示例代码讲解详细,对我们深入了解golang有一定的帮助,感兴趣的小伙伴可以了解下
    2023-08-08
  • 深入理解Golang的单元测试和性能测试

    深入理解Golang的单元测试和性能测试

    Go语言提供了强大的测试工具,下面这篇文章主要给大家介绍了关于Golang单元测试和性能测试的相关资料,文中通过示例代码给大家详细介绍了单元测试和性能测试的相关内容,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08

最新评论