代码
减法操作慎用uint型整数,让你意想不到错误
sexyspace 发表于2022-02-17 浏览413 评论0
昨天项目上线,出现一个莫名奇妙的错误,缓存中计算库存所剩余数量,拿全部库存-已用库存,这里设置的库存为uint32位
var a uint32 = 2 var b uint32 = 3 v := a - b fmt.Println(v)
打印:(刚开始一脸闷逼)
4294967295
纠错好久,才想起了这是个细节问题,当a-b成负数时候,因为:=会自动把v当做uint32位,所以系统会把负数的1的正负位当做最高进制来算,造成数值很大