基本介绍
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
方法列表:
方法列表可能滞后于代码,详情请查看接口文档。
相关文档
📄️ 类型转换-基本类型
全面介绍`GoFrame`框架`gconv`包的基本类型转换功能。讲解如何使用`gconv`进行整型(`Int`、`Int8`、`Int16`等)、无符号整型(`Uint`系列)、浮点型(`Float32`、`Float64`)、布尔型、字符串以及数组切片类型的转换。通过完整代码示例展示各种转换方法的使用和输出结果。特别说明数字转换方法支持自动识别十六进制和八进制字符串,如`0x`开头的十六进制数字转换功能。
📄️ 类型转换-Map转换
使用GoFrame框架中的gconv.Map方法实现类型转换,包括将任意map或struct/*struct类型转换为map[string]interface{}类型。支持属性标签和自定义标签,并可通过MapDeep方法实现递归转换,解析出嵌套对象的详细结构,适合多层次数据处理。
📄️ 类型转换-Struct转换
使用GoFrame的gconv模块进行结构体转换,包括从各种数据类型到结构体的映射、自动创建对象、递归转换以及映射规则等实用功能,帮助开发者提升编码效率和项目维护能力。
📄️ 类型转换-Structs转换
GoFrame框架中的类型转换方法,主要聚焦于使用Structs方法实现对struct数组的转换。Structs方法与Struct方法类似,并在其基础上扩展了对struct数组的支持。文中还提供了具体的代码示例,演示了如何在实际应用中使用这一功能。
📄️ 类型转换-Scan转换
了解如何使用GoFrame框架中强大的Scan方法实现任意参数到struct、struct数组、map、map数组的自动识别转换。本文介绍Scan方法的定义及其在Go语言中的应用,同时提供多个编程示例帮助快速理解和掌握此功能,为开发者提供高效便捷的类型转换解决方案。
📄️ 类型转换-Converter
详细介绍`GoFrame`框架`v2.9`版本新增的`gconv.Converter`类型转换接口,提供更严谨、更灵活的类型转换机制。支持创建转换对象实现严格的类型检查和错误处理,转换失败时返回错误而非零值。包含整数、浮点数、时间、结构体、Map、切片等多种类型的转换能力,支持注册自定义转换函数,可创建多个独立配置的转换器实例。相比传统`gconv`包方法,适合对数据准确性要求高的场景,提供一致的API设计和完整的错误处理机制。
📄️ 类型转换-自定义类型转换
全面介绍`GoFrame`框架`gconv`组件的自定义类型转换功能。讲解两种注册机制:`RegisterTypeConverterFunc`用于注册特定类型间的转换函数,支持结构体转换和别名类型转换;`RegisterAnyConverterFunc`用于注册通用转换函数。详细说明转换函数的签名要求,输入参数必须为非指针对象以保证安全性。通过多个完整代码示例展示如何实现结构体间转换、别名类型转换等场景,包括错误处理和嵌套结构转换。
📄️ 类型转换-UnmarshalValue
使用GoFrame框架中的gconv模块实现类型转换,尤其是通过UnmarshalValue接口实现自定义转换。详细探讨了反射特性在复杂类型转换中的应用及其性能影响,并提供了多个代码示例,包括自定义结构体转换和TCP数据解包,帮助开发者优化转换效率。
📄️ 类型转换-性能测试
展示`GoFrame`框架`gconv`类型转换组件的性能基准测试结果。测试涵盖多种基本类型转换操作,包括`String`、`Int`系列、`Uint`系列、`Float`系列、`Time`、`Bytes`、切片类型等转换的性能表现。每个测试项显示了执行次数、每次操作耗时、内存分配大小和分配次数,为开发者使用`gconv`进行类型转换时提供性能参考和优化指导。