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

為了賬號安全,請及時綁定郵箱和手機立即綁定

Golang url.Values轉換struct

標簽:
Go

前言

大家在写golang http服务的时候或许会碰到 Requesturl.Values转换成struct的需要。

思路

翻开net.url查看url.Values的定义

type Values map[string][]string

那么我是不是可以通过遍历structField获取对应的数据类型,以及通过tag来从url.Values中获取对应的参数?

答案是可以的,那么我们就开动吧。

先来定义一个struct,还有一个叫param 的tag。

type User struct {
     UserId int  `param:"user_id,100"}

字段名: UserId
url.Values中的字段名: user_id
默认值: 100

    typ := val.Type()    for i := 0; i < val.NumField(); i++ {
        kt := typ.Field(i) //获取字段类型
        tag := kt.Tag.Get("param") //获取tag
                sv := val.Field(i) //获取字段值
        uv := getVal(values, tag) //获取默认值
               switch sv.Kind() {        case reflect.String:
            ....        case reflect.Bool:
                ....
        }
}

好了,思路基本上是这样的,具体实现细节请参考
源码地址

性能测试

goos: linux
goarch: amd64
pkg: github.com/mokeoo/go-querystruct/params
2000000000           0.00 ns/op
PASS



作者:0x1024
链接:https://www.jianshu.com/p/93bfb6411489

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

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

幫助反饋 APP下載

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

公眾號

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

舉報

0/150
提交
取消