亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在golang中,一般功能是將http表單數據加載到結構中

在golang中,一般功能是將http表單數據加載到結構中

Go
Cats萌萌 2021-05-12 09:17:06
在Go中,http表單數據(例如來自POST或PUT請求的數據)可以作為表單的映射進行訪問map[string][]string。我很難以通用的方式將其轉換為結構。例如,我要加載類似的地圖:m := map[string][]string {    "Age": []string{"20"},    "Name": []string{"John Smith"},}變成像這樣的模型:type Person struct {    Age   int    Name string}因此,我試圖編寫一個帶有簽名的函數,該函數LoadModel(obj interface{}, m map[string][]string) []error會將表單數據加載到interface {}中,我可以將其類型轉換回Person。使用反射,這樣我就可以在具有任何字段的任何結構類型上使用它,而不僅是Person,而且可以根據需要將字符串從http數據轉換為int,boolean等。在golang中使用此問題的答案,在使用反射時,如何設置struct字段的值?我可以使用反射設置一個人的價值,例如:p := Person{25, "John"}reflect.ValueOf(&p).Elem().Field(1).SetString("Dave")但是然后我必須為我擁有的每種類型的結構復制load函數。當我嘗試將其用于接口{}時,它將無法正常工作。pi := (interface{})(p)reflect.ValueOf(&pi).Elem().Field(1).SetString("Dave")// panic: reflect: call of reflect.Value.Field on interface Value一般情況下我該怎么做?甚至更好的是,有沒有一種更慣用的Go方式可以完成我想做的事情?
查看完整描述

3 回答

  • 3 回答
  • 0 關注
  • 250 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號