安装
go get github.com/spf13/cast
简介
Cast 是一个以一致且简单的方式在不同 go 类型之间进行转换的库。
Cast 提供了简单的函数来轻松地将数字转换为字符串,将接口转换为布尔值等。当可以进行明显的转换时,Cast 会智能地执行此操作。它不会尝试猜测您的意思,例如,当它是 int 的字符串表示形式(例如“8”)时,您只能将字符串转换为 int。Cast 是为在 Hugo中使用而开发的,这是一个使用 YAML、TOML 或 JSON 来存储元数据的网站引擎。
为什么要使用 Cast?
在 Go 中处理动态数据时,您通常需要将数据从一种类型转换或转换为另一种类型。Cast 不仅仅是使用类型断言(尽管它在可能的情况下使用它)来提供一个非常简单和方便的库。
如果您正在使用接口来处理诸如动态内容之类的事情,您将需要一种简单的方法来将接口转换为给定类型。这是给你的图书馆。
如果您从 YAML、TOML 或 JSON 或其他缺乏完整类型的格式中获取数据,那么 Cast 是适合您的库。
用法
Cast 提供了一些 To_____ 方法。这些方法将始终返回所需的类型。如果提供的输入不会转换为该类型,则将返回该类型的 0 或 nil 值。
Cast 还提供了相同的方法 To_____E。这些返回与 To_____ 方法相同的结果,加上一个额外的错误,告诉您它是否成功转换。使用这些方法,您可以区分输入何时匹配零值或转换失败并返回零值。
以下示例仅是可用示例。请查看完整的代码集。
示例“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"
示例“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