go语言中实现类型转换,了解一下cast组件

2023-06-01 00:00:00 组件 类型 转换

我今天看了一下beego中也默认集成了cast组件包了,用的时候直接引入就OK了

cast.png

go语言是静态强类型语言,所以代码中对类型要求的死死的,如果是自己手动去处理,一容易出错,二不能兼容多数类型,比较麻烦。


这个时候cast组件的作用就大且方便了,

使用cast组件不但在Go中从一种类型非常轻松安全地转换为另一种类型,

而且能够让代码更健壮、可维护性也更高。



Cast是一个以一致且简单的方式在不同go类型之间进行转换的库。


git:

https://github.com/spf13/cast

Cast 提供了简单的函数来轻松地将数字转换为字符串,将接口转换为布尔值等。

当明显的转换可能时,Cast 会智能地执行此操作。

它不会尝试猜测您的意思,例如,只有当字符串是 int 的字符串表示形式(例如“8”)时,您才能将字符串转换为 int。 

Cast 是为在 Hugo 中使用而开发的,Hugo 是一个使用 YAML、TOML 或 JSON 来获取元数据的网站引擎。



用法

Cast 提供了一些 To_____ 方法。

这些方法将始终返回所需的类型。

如果提供的输入不会转换为该类型,则将返回该类型的 0 或 nil 值。


Cast 还提供了相同的方法 To_____E。

这些返回与 To_____ 方法相同的结果,加上一个额外的错误,告诉您它是否成功转换。

使用这些方法,您可以区分输入与零值匹配的时间或转换失败并返回零值的时间。



官方git上的例子

案例1 ToString:

cast.ToString("mayonegg")         // "mayonegg"
cast.ToString(8)                  // "8"
cast.ToString(8.31)               // "8.31"
cast.ToString([]byte("one time")) // "one time"
cast.ToString(nil)                // ""
var foo interface{} = "one more time"
cast.ToString(foo)                // "one more time"


案例2 ToInt

cast.ToInt(8)                  // 8
cast.ToInt(8.31)               // 8
cast.ToInt("8")                // 8
cast.ToInt(true)               // 1
cast.ToInt(false)              // 0
var eight interface{} = 8
cast.ToInt(eight)              // 8
cast.ToInt(nil)                // 0

相关文章