go语言中实现类型转换,了解一下cast组件
我今天看了一下beego中也默认集成了cast组件包了,用的时候直接引入就OK了
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
相关文章