在 go 语言中,对于没有赋值的信息,会默认给予一个零值。而 int 型零值正好等于 0,因此在处理一些 http 请求时,容易产生无法区分读到的字段信息为 0 是零值还是传参为零。
这里提供两种简单的思路:
1、修改规定接收类型为 string 型。当前端如果没有传值进来,那么后端将解析得到 "" 。因为 string 型的零值为 "" ,所以我们只需要判断接收到的 string 型是否为空即可。若不为空,则将字符串转换为数字,即可得到传参为 0 或其他数字的情况。
2、仍保持接收类型为 int 型,修改使用指针去接收这个字段。通常情况下,我们往往直接在 controller 层将映射结构体解析后直接传递至 service 层进行业务处理。为了区分零值和 0,我们可以在 controller 层先用指针去解析该字段。若解析后为 nil,则表示请求中未传值,那么我们可以给这个字段赋予一个特殊的值,例如-1。如果本身该字段有值,那么将该指针解引用。经过这一层处理后,再将该字段传递至 service 层进行相关业务处理。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于