• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

使用go语言遇到的一些问题记录

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

一、参数校验问题

使用go做web服务时,经常需要对请求参数进行校验,有些必填参数需要校验是否为空。

经常会遇到参数a为int类型,但是其值取值范围为0-xxx。0也是有意义的。

即参数a如果传0也算传参了,但是go中传0会被认为是没有传,无法通过校验,导致出现问题。

目前的解决方法是将请求参数类型设置为*int,即int指针。这样做就可以对a做nil判断。

传0之后其指针不会为nil,可以通过校验。

二、json解析问题

假设我们收到二进制数据,需要用json.UnMarshal解析成结构体,结构体类型为interface。

如果二进制数据类型为int的话,会被解析成float类型,因为go认为所有数值类型都是float类型。

需要使用json.NewDecoder对象

    decoder := json.NewDecoder(bytes.NewReader(respData))
    decoder.UseNumber()
    err = decoder.Decode(resp)

调用UseNumber之后,再调用Decode解析

将解析出来的对象转换成json.Number,然后调用String方法转成字符串,然后使用strconv.AtoI将其转为int。

需要转换成int64的话也可以调用json.Number的Int64方法转成int64

三、待补充


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go基础系列:双层channel用法示例发布时间:2022-07-10
下一篇:
Go操作etcd发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap