跳到主要内容
版本:2.7.x(Latest)

基本介绍

GoFrame 框架提供了非常强大易用的类型转换包 gconv,可以实现将常用数据类型转换为指定的数据类型,对常用基本数据类型之间的无缝转换,同时也支持任意类型到 struct 对象的转换。由于 gconv 模块内部大量优先使用了断言而非反射,因此执行的效率非常高。

注意事项:

gconv 包的主要目标是提供简便且高效的类型转换功能,开发者应当注意转换的输入参数以及当前使用的业务场景,部分方法如果转换失败,那么方法并不会返回错误原因,也不会产生 panic,而是直接以转换失败后的数值返回。因此,开发者往往需要结合返回值以及当前使用的业务场景来综合判断结果的正确性。

使用方式:

import "github.com/gogf/gf/v2/util/gconv"

接口文档

https://pkg.go.dev/github.com/gogf/gf/v2/util/gconv

方法列表:

方法列表可能滞后于代码,详情请查看接口文档。

相关文档

📄️ 类型转换-UnmarshalValue

当然,想必您已经猜到了,在对一些复杂类型(如 struct)的转换时, gconv 模块内部其实使用了反射的特性来实现的。这虽然为开发者提供了极大的便捷,但是这确实是以性能损耗为代价的。其实在对于 struct 转换时,如果开发者已经 明确转换规则,并且对于其中的性能损耗比较在意,那么可以对特定的 struct 实现 UnmarshalValue 接口来实现 自定义转换。当使用 gconv 模块对该 struct 进行转换时,无论该 struct 是直接作为转换对象或者作为转换对象的属性, gconv 都将会自动识别其实现的 UnmarshalValue 接口并直接调用该接口实现类型转换,而不会使用反射特性来实现转换。