Go的安全数字类型转换库

102 阅读1分钟

安全铸型

用于Go的安全数字类型转换库

English |简体中文

License Apache 2.0 Python Build Status Coverage Status GoReport

安全的数字类型转换库。支持所有的积分和浮动类型,除了uintptr。

这个库依赖于1.18+版本中引入的go generics。

使用方法:

val, ok := To[type](value)

ok == false 表示发生了溢出。但不管怎样, 总是等于类型转换 ( ) 的结果。val``type(value)

安全转换

import "github.com/chen3feng/safecast"

包safecast提供了一种安全的方法来将一个数字值从A类型转换到B类型,并有溢出和下溢检查。

funcTo

func To[ToType numericType, FromType numericType](value FromType) (result ToType, ok bool)

To将一个数值从FromType安全地转换为指定的ToType类型。结果总是与通常的类型转换(type(value))相同,但是当溢出或下溢发生时,ok为假。

例子 (浮点数溢出)

package

输出

+Inf false

例子 (Int无溢出)

package

输出

255 true

例子 (Int 溢出)

package

输出

0 false

例子 (范围内的值)

package

输出

1 true

例子 (超出范围的值)

package

输出

4294967295 false