go的基本数据类型都有默认值。
那么现在遇到一个问题,使用结构体映射前端传来的参数,有时候某些参数会为空或者默认值也是有意义的。 比如: 结构体中有个成员是int类型 int的默认值是0 ,但是0值在我的业务逻辑中有其具体意义。
想请教各位在前端-后端-数据库这个过程中怎么处理这个问题的。
目前已知集中解决方案: 1、业务中有具体意义的内容规避掉默认值,但这个显然有点因噎废食了。 2、budiler设计,这个也是比较麻烦。 3、指针类型,但是需要在整个流程中进行多次处理,也麻烦。
请教大家有没有别的什么看法。
谢谢大家。
有疑问加站长微信联系(非本文作者)

方案都被你说出来了你自己选呗。。反正我们go后端定义接口,要求不能出现默认值,除非真的必要。如果要判断基础类型个人觉得最好用指针。如果是定义的结构体,可以自定义json反序列化接口实现一个你自己的判空逻辑。
哈哈哈哈,我中间加了一层转化做判断,道理都懂,就是想看看你们有经验的有没有更好的办法。
同问,有没有什么优雅的方法
用 map,判断key是否存在,存在则将 value转成 int
这时候就是结构体json序列化函数MarshalJSON出来判断处理了
这样也不行啊,我索性摆烂了,验证绑一个struct 取参我直接用map
同问,有解决的代码吗,感觉怎么做都不够优雅。。。。。
感觉非要这样就map吧,尽量不要让0有业务意义