题目描述
如果我想在使用基于定义大小的类型(int8、int16、int32、int64、uint8、uint16、uint32或uint64)的自增量时检测整数溢出, 能否有一个好的方法,目前想到这个:
package main
import (
"fmt"
"math"
)
func increInt(count int64) int64 {
if count == math.MaxInt64 {
panic("int64 overflow")
}
return count + 1
}
func main() {
fmt.Println(increInt(1))
fmt.Println(increInt(999999999999999999))
fmt.Println(math.MaxInt64)
fmt.Println(increInt(9223372036854775807)
}
运行上述代码:
2
1000000000000000000
9223372036854775807
panic: int64 overflow
goroutine 1 [running]:
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
抛出错误使用
recover
, 直接panic
程序会停止, 也可以使用Errors包例子: