gin使用自定義結(jié)構(gòu)綁定表單數(shù)據(jù)的示例代碼
以下示例使用自定義結(jié)構(gòu)
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()
}
運(yùn)行示例:
$ 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"}}
注意:不支持以下樣式結(jié)構(gòu)
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
}
總之,現(xiàn)在只支持現(xiàn)在沒有form標(biāo)簽的自定義結(jié)構(gòu)
到此這篇關(guān)于gin使用自定義結(jié)構(gòu)綁定表單數(shù)據(jù)的示例代碼的文章就介紹到這了,更多相關(guān)gin綁定表單數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang分布式應(yīng)用定時(shí)任務(wù)示例詳解
這篇文章主要為大家介紹了Golang分布式應(yīng)用定時(shí)任務(wù)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
Golang測試func?TestXX(t?*testing.T)的使用詳解
一般Golang中的測試代碼都以xxx_test.go的樣式,在命名測試函數(shù)的時(shí)候以Testxx開頭,下面給大家介紹Golang測試func?TestXX(t?*testing.T)的使用,感興趣的朋友跟隨小編一起看看吧2024-08-08
在Go語言中實(shí)現(xiàn)DDD領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)實(shí)例探究
本文將詳細(xì)探討在Go項(xiàng)目中實(shí)現(xiàn)DDD的核心概念、實(shí)踐方法和實(shí)例代碼,包括定義領(lǐng)域模型、創(chuàng)建倉庫、實(shí)現(xiàn)服務(wù)層和應(yīng)用層,旨在提供一份全面的Go DDD實(shí)施指南2024-01-01
詳解如何利用GORM實(shí)現(xiàn)MySQL事務(wù)
為了確保數(shù)據(jù)一致性,在項(xiàng)目中會經(jīng)常用到事務(wù)處理,對于MySQL事務(wù)相信大家應(yīng)該都不陌生。這篇文章主要總結(jié)一下在Go語言中Gorm是如何實(shí)現(xiàn)事務(wù)的;感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助2022-09-09
go語言中的數(shù)組指針和指針數(shù)組的區(qū)別小結(jié)
本文主要介紹了go語言中的數(shù)組指針和指針數(shù)組的區(qū)別小結(jié),文中通過示例代碼介紹的很詳細(xì),具有一定的參考價(jià)值,感興趣的可以了解一下2024-10-10
淺析Go語言中的緩沖區(qū)及其在fmt包中的應(yīng)用
這篇文章主要為大家詳細(xì)介紹了Go語言中的緩沖區(qū)及其在fmt包中的應(yīng)用的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2024-01-01
在Go中動(dòng)態(tài)替換SQL查詢中的日期參數(shù)的完整步驟
在處理數(shù)據(jù)庫查詢時(shí),經(jīng)常需要根據(jù)不同的輸入條件動(dòng)態(tài)地構(gòu)造SQL語句,尤其是在涉及日期范圍的查詢中,能夠根據(jù)實(shí)際需求調(diào)整查詢的起始和結(jié)束日期顯得尤為重要,在本文中,我將介紹如何在Go語言中實(shí)現(xiàn)動(dòng)態(tài)替換SQL查詢中的日期參數(shù),需要的朋友可以參考下2024-11-11

