ymkNK / ymkNK.github.io

Personal Blog
https://lllovol.com
2 stars 0 forks source link

Go实践:将Struct转为Query参数字符串 #132

Open ymkNK opened 2 years ago

ymkNK commented 2 years ago

https://lllovol.com/p/2022/6/build-api-query/

背景 在写go的过程中,经常需要拼接一些url来进行http的请求,代码起来感觉非常的不优雅,全是fmt,因此写了一个小工具,将简单的struct,通过json的tag,转化为对应的query string 代码 // IsNil 判断指针,Slice,Map类型的值是否为空 func IsNil(i interface{}) bool { // 首先判断i是否为nil if i == nil { return true } // 判断值是否为nil vi := reflect.ValueOf(i) if vi.Kind() == reflect.Ptr || vi.Kind() == reflect.Slice || vi.Kind() == reflect.Map { return vi.IsNil() } return false } // ParseToRequestQuery 将简单json结构体转成query参数 func ParseToRequestQuery(p interface{}) string { paramArr := buildParamArr(p) return strings.Join(paramArr, "&") } func buildParamArr(p interface{}) []string { v := reflect.