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


    一、参数校验问题

    使用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

    三、待补充

  • 相关阅读:
    Mac下django简单安装配置步骤
    NuGet 使用笔记
    gulp es7配置文件
    HaProxy配置
    Java工作环境笔记
    ReactJs笔记
    架构应该解决好对象的克隆问题
    Kotlin笔记
    Scala 笔记
    spark 笔记
  • 原文地址:https://www.cnblogs.com/lgh344902118/p/15339087.html
Copyright © 2020-2023  润新知