-
我把结构体放进 List 里改它的字段,改了半天发现原数据纹丝不动,我盯着这个见了鬼的结果排查了大半天才搞懂值类型复制语义的深度复盘
我定义了个 struct(如 Point),放进 List 后想遍历改它的字段,结果改完原数据纹丝不动、修改压根没生效。我明明 var p = list[0]; p.X = 99 改了、p 也确实变了,可 list[0] 就是不变。深究才懂:struct 是值类型,赋值/传参传的是"拷贝"而非引用——var p = list[0] 拿到的是副本,改 p 改的是副本,list 里…- 0
- 0
-
err 是 nil 却不等于 nil:Go 接口 nil 避坑复盘
这是一个让我对着 if err != nil 这行 Go 程序员每天写八百遍的代码彻底懵掉的 bug。现象是我们一个接口明明一切正常没有任何错误,可它总是走进错误处理的分支对用户返回系统异常。我盯着那个判断条件看了半天:函数我也看了正常情况下它返回的就是 nil 啊,既然返回了 nil 那 err != nil 不就该是 false 就不该进错误分支吗?可它偏偏进了,我甚至开始怀疑是不是 Go 的…- 0
- 0
-
一行算术抛空指针:Java 自动拆箱避坑复盘
这个 bug 让我对着一行算术代码瞪了整整半个小时,怎么也想不通它为什么会抛空指针:我们一个统计接口偶发性地报 NullPointerException,而异常堆栈指向的是 int total = stat.getCount() * 2 这么一行平平无奇的代码。我的第一反应是这怎么可能空指针,stat 我前面明明判过非空了,getCount 就是个普通取值方法,后面是个乘以2的算术运算,一行纯粹的…- 0
- 0
装箱
幸运之星正在降临...
点击领取今天的签到奖励!
恭喜!您今天获得了{{mission.data.mission.credit}}积分
我的优惠劵
-
¥优惠劵使用时效:无法使用使用时效:
之前
使用时效:永久有效优惠劵ID:×
没有优惠劵可用!



