spf13/cast

GitHub: spf13/cast

Cast 是一个 Go 类型转换库,提供安全简洁的函数在不同类型之间进行转换,尤其适合处理来自 YAML、TOML、JSON 等弱类型格式的动态数据。

Stars: 3984 | Forks: 331

# cast [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/spf13/cast/ci.yaml?style=flat-square)](https://github.com/spf13/cast/actions/workflows/ci.yaml) [![go.dev reference](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go&logoColor=white&style=flat-square)](https://pkg.go.dev/mod/github.com/spf13/cast) ![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/spf13/cast?style=flat-square&color=61CFDD) [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/spf13/cast/badge?style=flat-square)](https://deps.dev/go/github.com%252Fspf13%252Fcast) 在 Go 中轻松且安全地将一种类型转换为另一种类型 不要慌张!... 用 Cast ## 什么是 Cast? Cast 是一个库,用于以一致且简单的方式在不同的 Go 类型之间进行转换。 Cast 提供了简单的函数,可以轻松地将数字转换为字符串,将 interface 转换为 bool 等。当可以进行明显的转换时,Cast 会智能地处理。 它不会尝试猜测你的意图,例如,你只能在字符串是 int 的字符串 表示形式(如“8”)时,将其转换为 int。Cast 的开发是为了在 [Hugo](https://gohugo.io) 中使用,这是一个使用 YAML、TOML 或 JSON 作为元数据的网站引擎。 ## 为什么使用 Cast? 在 Go 中处理动态数据时,你经常需要将数据 从一种类型转换或转换为另一种类型。Cast 不仅仅使用类型断言(尽管 它会在可能的情况下使用),而是提供了一个非常直接且方便的 库,超越了这一点。 如果你正在使用 interface 来处理动态内容等, 你将需要一种简单的方法将 interface 转换为给定的类型。这 就是为你准备的库。 如果你正在接收来自 YAML、TOML 或 JSON 或其他缺乏 完整类型的格式的数据,那么 Cast 就是你需要的库。 ## 用法 Cast 提供了一些 To_____ 方法。这些方法将始终返回 所需的类型。**如果提供的输入无法转换为该类型,将返回该类型的 0 或 nil 值**。 Cast 还提供了相同的方法 To_____E。这些方法返回与 To_____ 方法相同的结果,外加一个额外的 error,告诉你转换是否成功 。使用这些方法,你可以区分输入 匹配了零值,还是转换失败并返回了零值。 以下示例只是可用功能的一小部分。请查看 代码以获取完整的集合。 ### 示例 ‘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 ``` ## 开发 该项目使用 [just](https://just.systems/) 来运行开发任务。 运行测试套件: ``` just test ``` 运行 linter: ``` just lint ``` 一些 linter 违规可以自动修复: ``` just fmt ``` ## 许可证 该项目基于 [MIT License](LICENSE) 授权。
标签:EVTX分析, Go, Ruby工具, 开发库, 日志审计, 类型转换