新人,请教大家一个关于基本数据类型默认值的问题

os7blue · 2022-10-26 17:57:21 · 2855 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2022-10-26 17:57:21 的主题,其中的信息可能已经有所发展或是发生改变。

go的基本数据类型都有默认值。

那么现在遇到一个问题,使用结构体映射前端传来的参数,有时候某些参数会为空或者默认值也是有意义的。 比如: 结构体中有个成员是int类型 int的默认值是0 ,但是0值在我的业务逻辑中有其具体意义。

想请教各位在前端-后端-数据库这个过程中怎么处理这个问题的。

目前已知集中解决方案: 1、业务中有具体意义的内容规避掉默认值,但这个显然有点因噎废食了。 2、budiler设计,这个也是比较麻烦。 3、指针类型,但是需要在整个流程中进行多次处理,也麻烦。

请教大家有没有别的什么看法。

谢谢大家。


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2855 次点击  ∙  1 赞  
加入收藏 微博
9 回复  |  直到 2022-11-09 09:25:08
jan-bar
jan-bar · #1 · 2年之前

方案都被你说出来了你自己选呗。。反正我们go后端定义接口,要求不能出现默认值,除非真的必要。如果要判断基础类型个人觉得最好用指针。如果是定义的结构体,可以自定义json反序列化接口实现一个你自己的判空逻辑。

os7blue
os7blue · #2 · 2年之前
jan-barjan-bar #1 回复

方案都被你说出来了你自己选呗。。反正我们go后端定义接口,要求不能出现默认值,除非真的必要。如果要判断基础类型个人觉得最好用指针。如果是定义的结构体,可以自定义json反序列化接口实现一个你自己的判空逻辑。

哈哈哈哈,我中间加了一层转化做判断,道理都懂,就是想看看你们有经验的有没有更好的办法。

wenyaobo
wenyaobo · #3 · 2年之前

同问,有没有什么优雅的方法

sanrentai
sanrentai · #4 · 2年之前

用 map,判断key是否存在,存在则将 value转成 int

tuzhiya
tuzhiya · #5 · 2年之前

这时候就是结构体json序列化函数MarshalJSON出来判断处理了

os7blue
os7blue · #6 · 2年之前
sanrentaisanrentai #4 回复

用 map,判断key是否存在,存在则将 value转成 int

这样也不行啊,我索性摆烂了,验证绑一个struct 取参我直接用map

don178
don178 · #7 · 2年之前

同问,有解决的代码吗,感觉怎么做都不够优雅。。。。。

cy422396350
cy422396350 · #8 · 2年之前

感觉非要这样就map吧,尽量不要让0有业务意义

EddyLee1010
EddyLee1010 · #9 · 2年之前
  • 不行么
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传