Documentation ¶
Overview ¶
包gconv实现了对任何类型变量的强大而便捷的转换功能。
此包应尽量减少与其他包的依赖关系。 md5:b18f07aca2be5125
Index ¶
- Variables
- func MapToMap(params interface{}, pointer interface{}, mapping ...map[string]string) error
- func MapToMaps(params interface{}, pointer interface{}, mapping ...map[string]string) error
- func Scan(srcValue interface{}, dstPointer interface{}, ...) (err error)
- func ScanList(structSlice interface{}, structSlicePointer interface{}, bindToAttrName string, ...) (err error)
- func SliceAny别名(值 interface{}) []interface{}
- func SliceFloat32别名(any interface{}) []float32
- func SliceFloat64别名(any interface{}) []float64
- func SliceFloat别名(any interface{}) []float64
- func SliceIet32别名(any interface{}) []int32
- func SliceIne别名(any interface{}) []int
- func SliceInt64别名(any interface{}) []int64
- func SliceMapDeep别名(any interface{}) []map[string]interface{}
- func SliceMap别名(值 interface{}, option ...MapOption) []map[string]interface{}
- func SliceStruct别名(params interface{}, pointer interface{}, mapping ...map[string]string) (err error)
- func SliceStr别名(any interface{}) []string
- func SliceUint32别名(any interface{}) []uint32
- func SliceUint64别名(any interface{}) []uint64
- func SliceUint别名(any interface{}) []uint
- func String(any interface{}) string
- func Struct(params interface{}, pointer interface{}, ...) (err error)
- func StructTag(params interface{}, pointer interface{}, priorityTag string) (err error)
- func Structs(params interface{}, pointer interface{}, ...) (err error)
- func StructsTag(params interface{}, pointer interface{}, priorityTag string) (err error)
- func X取Map(值 interface{}, 选项 ...MapOption) map[string]interface{}
- func X取Map_递归(值 interface{}, 值标签 ...string) map[string]interface{}
- func X取Map数组(值 interface{}, 选项 ...MapOption) []map[string]interface{}
- func X取Map数组_递归(值 interface{}, 值标签 ...string) []map[string]interface{}
- func X取any指针(值 interface{}) *interface{}
- func X取any数组(any interface{}) []interface{}
- func X取gtime时间类(any interface{}, format ...string) *gtime.Time
- func X取字符(值 interface{}) rune
- func X取字符数组(值 interface{}) []rune
- func X取字节(值 interface{}) byte
- func X取字节集(any interface{}) []byte
- func X取小数32位(any interface{}) float32
- func X取小数32位指针(值 interface{}) *float32
- func X取小数32位数组(值 interface{}) []float32
- func X取小数64位(any interface{}) float64
- func X取小数64位指针(值 interface{}) *float64
- func X取小数64位数组(值 interface{}) []float64
- func X取小数数组(any interface{}) []float64
- func X取布尔(any interface{}) bool
- func X取布尔指针(值 interface{}) *bool
- func X取整数(值 interface{}) int
- func X取整数16位(值 interface{}) int16
- func X取整数16位指针(值 interface{}) *int16
- func X取整数32位(值 interface{}) int32
- func X取整数32位指针(值 interface{}) *int32
- func X取整数32位数组(值 interface{}) []int32
- func X取整数64位(any interface{}) int64
- func X取整数64位指针(值 interface{}) *int64
- func X取整数64位数组(值 interface{}) []int64
- func X取整数8位(值 interface{}) int8
- func X取整数8位指针(值 interface{}) *int8
- func X取整数指针(值 interface{}) *int
- func X取整数数组(any interface{}) []int
- func X取文本Map(值 interface{}, 选项 ...MapOption) map[string]string
- func X取文本Map_递归(值 interface{}, 值标签 ...string) map[string]string
- func X取文本指针(值 interface{}) *string
- func X取文本数组(any interface{}) []string
- func X取时长(值 interface{}) time.Duration
- func X取时间(any interface{}, 格式 ...string) time.Time
- func X取正整数(值 interface{}) uint
- func X取正整数16位(值 interface{}) uint16
- func X取正整数16位指针(值 interface{}) *uint16
- func X取正整数32位(值 interface{}) uint32
- func X取正整数32位指针(值 interface{}) *uint32
- func X取正整数32位数组(值 interface{}) []uint32
- func X取正整数64位(any interface{}) uint64
- func X取正整数64位指针(值 interface{}) *uint64
- func X取正整数64位数组(值 interface{}) []uint64
- func X取正整数8位(值 interface{}) uint8
- func X取正整数8位指针(值 interface{}) *uint8
- func X取正整数指针(值 interface{}) *uint
- func X取正整数数组(any interface{}) []uint
- func X字节集到文本_非安全(字节集 []byte) string
- func X按参考值类型转换(值 interface{}, 参考值 interface{}, extraParams ...interface{}) interface{}
- func X按名称转换(值 interface{}, 类型名称 string, extraParams ...interface{}) interface{}
- func X文本到字节集_非安全(文本 string) []byte
- func X转换器注册(fn interface{}) (错误 error)
- type MapOption
Constants ¶
This section is empty.
Variables ¶
var ( // StructTagPriority 定义了Map*/Struct*函数的默认优先级标签。 // 注意,`gconv/param` 标签由旧版本的包使用。强烈建议未来改用简短的标签 `c/p`。 // md5:c4b7d2fe8905ed52 StructTagPriority = gtag.StructTagPriority )
Functions ¶
func MapToMap ¶
MapToMap 通过反射将任何map类型变量`params`转换为另一个map类型变量`pointer`。 参考 doMapToMap。 md5:8fbdb048d4cad524
func MapToMaps ¶
MapToMaps 将任何切片类型变量 `params` 转换为另一个映射切片类型变量 `pointer`。 参见 doMapToMaps。 md5:70b6d6cf0e63da31
func Scan ¶
func Scan(srcValue interface{}, dstPointer interface{}, paramKeyToAttrMap ...map[string]string) (err error)
Scan 自动检查`pointer`的类型,并将`params`转换为`pointer`。 它支持以下类型的`pointer`进行转换:`*map/*[]map/*[]*map/*struct/**struct/*[]struct/*[]*struct`。
待办:将`paramKeyToAttrMap`改为`ScanOption`以提高可扩展性;为`ScanOption`添加`DeepCopy`选项。 md5:6b1a82a906dd8ec9
func ScanList ¶
func ScanList(structSlice interface{}, structSlicePointer interface{}, bindToAttrName string, relationAttrNameAndFields ...string) (err error)
ScanList将`structSlice`转换为包含其他复杂结构体属性的结构体切片。 注意,参数`structSlicePointer`的类型应为*[]struct/*[]*struct。
使用示例1:普通属性结构关系:
type EntityUser struct { Uid int Name string } type EntityUserDetail struct { Uid int Address string } type EntityUserScores struct { Id int Uid int Score int Course string } type Entity struct { User *EntityUser UserDetail *EntityUserDetail UserScores []*EntityUserScores } var users []*Entity var userRecords = EntityUser{Uid: 1, Name:"john"} var detailRecords = EntityUser{Uid: 1, Address: "chengdu"} var scoresRecords = EntityUser{Id: 1, Uid: 1, Score: 100, Course: "math"} ScanList(userRecords, &users, "User") ScanList(userRecords, &users, "User", "uid") ScanList(detailRecords, &users, "UserDetail", "User", "uid:Uid") ScanList(scoresRecords, &users, "UserScores", "User", "uid:Uid") ScanList(scoresRecords, &users, "UserScores", "User", "uid")
使用示例2:嵌入属性结构关系:
type EntityUser struct { Uid int Name string } type EntityUserDetail struct { Uid int Address string } type EntityUserScores struct { Id int Uid int Score int } type Entity struct { EntityUser UserDetail EntityUserDetail UserScores []EntityUserScores } var userRecords = EntityUser{Uid: 1, Name:"john"} var detailRecords = EntityUser{Uid: 1, Address: "chengdu"} var scoresRecords = EntityUser{Id: 1, Uid: 1, Score: 100, Course: "math"} ScanList(userRecords, &users) ScanList(detailRecords, &users, "UserDetail", "uid") ScanList(scoresRecords, &users, "UserScores", "uid")
示例代码中的"User/UserDetail/UserScores"指定当前结果将绑定的目标属性结构。
示例代码中的"uid"是结果的表字段名,而"Uid"是相关结构体属性名,而不是绑定到目标的属性名。在示例代码中,它是实体"Entity"的"User"属性的"Uid"属性名称。它会根据给定的`relation`参数自动计算HasOne/HasMany关系。
参考示例或单元测试用例以更清楚地理解此函数的工作原理。 md5:1e63a3d19a1b0060
func SliceAny别名 ¶
func SliceAny别名(值 interface{}) []interface{}
SliceAny别名 是 Interfaces 的别名。 md5:4a67bb7703f4770e
func SliceFloat32别名 ¶
func SliceFloat32别名(any interface{}) []float32
SliceFloat32别名 是 Float32s 的别名。 md5:686d576236624be0
func SliceFloat64别名 ¶
func SliceFloat64别名(any interface{}) []float64
SliceFloat64别名 是 Float64s 的别名。 md5:8fe51e4f2e2255df
func SliceFloat别名 ¶
func SliceFloat别名(any interface{}) []float64
SliceFloat别名是Floats的别名。 md5:d770be8332715271
func SliceIet32别名 ¶
func SliceIet32别名(any interface{}) []int32
SliceIet32别名 是 Int32s 的别名。 md5:ea50c4495697e1ad
func SliceIne别名 ¶
func SliceIne别名(any interface{}) []int
SliceIne别名 是 Ints 的别名。 md5:1918d6b770b537c7
func SliceInt64别名 ¶
func SliceInt64别名(any interface{}) []int64
SliceInt64别名 是 Int64s 的别名。 md5:c8c6a11351f3c7dc
func SliceMapDeep别名 ¶
func SliceMapDeep别名(any interface{}) []map[string]interface{}
SliceMapDeep别名 是 MapsDeep 的别名。 不推荐使用:请改用 SliceMap。 md5:e577a1254364096d
func SliceMap别名 ¶
SliceMap别名 是 Maps 的别名。 md5:af436f87335633ac
func SliceStruct别名 ¶
func SliceStruct别名(params interface{}, pointer interface{}, mapping ...map[string]string) (err error)
SliceStruct别名 是 Structs 的别名。 md5:844cd0606fb4edf0
func SliceStr别名 ¶
func SliceStr别名(any interface{}) []string
SliceStr别名是Strings的别名。 md5:dacb4ebc45c023cf
func SliceUint32别名 ¶
func SliceUint32别名(any interface{}) []uint32
SliceUint32别名是Uint32s的别名。 md5:128b14c8ffd2f906
func SliceUint64别名 ¶
func SliceUint64别名(any interface{}) []uint64
SliceUint64别名 是 Uint64s 的别名。 md5:8436f35c37880e8c
func SliceUint别名 ¶
func SliceUint别名(any interface{}) []uint
SliceUint别名是Uints的别名。 md5:75cea5e3f6b32ecb
func String ¶
func String(any interface{}) string
String 将 `any` 转换为字符串。它是最常用的转换函数。 md5:722d0704c061781b
func Struct ¶
func Struct(params interface{}, pointer interface{}, paramKeyToAttrMap ...map[string]string) (err error)
结构体将参数的键值对映射到对应结构对象的属性。 第三个参数 `mapping` 不必要,表示自定义键名和属性名之间的映射规则(区分大小写)。
注意: 1. `params` 可以是任何类型的 map/struct,通常为 map。 2. `pointer` 应该是 *struct/**struct 类型,即指向结构体对象或结构体指针。 3. 只有结构体对象的公共属性可以被映射。 4. 如果 `params` 是一个 map,其键 `params` 可以是小写。在映射过程中,它会自动将键的首字母转换为大写进行匹配。如果键不匹配,它将忽略该键。 md5:b39a46da903b06f5
func StructTag ¶
StructTag 作为 Struct 的功能,但同时也支持优先级标签特性。这个特性用于获取 `params` 键值对中的指定标签,并将其映射到结构体属性名上。 参数 `priorityTag` 支持多个标签,这些标签之间可以使用逗号 `,` 进行连接。 md5:14d47a8c22737303
func Structs ¶
func Structs(params interface{}, pointer interface{}, paramKeyToAttrMap ...map[string]string) (err error)
Structs 将任何切片转换为给定结构体类型的切片。 另请参见 Scan, Struct。 md5:9f4251433eeb586c
func StructsTag ¶
StructsTag 作为 Structs 的功能增强版本,还支持优先级标签特性。它根据 `params` 键值对获取指定的标签,并将其映射到结构体属性名称上。 参数 `priorityTag` 支持多个标签,这些标签可以使用逗号分隔。 md5:ddc344beca5956a8
func X取Map ¶
X取Map 将任何变量 `value` 转换为 map[string]interface{}。如果参数 `value` 不是 类型为 map/struct/*struct,转换将会失败并返回 nil。
如果 `value` 是一个 struct/*struct 对象,第二个参数 `tags` 指定了具有最高优先级的 将被检测的标签,否则它会按照以下顺序检测标签: gconv, json, 字段名称。 md5:34498665a6393f82
func X取Map_递归 ¶
X取Map_递归递归地执行Map函数,这意味着如果`value`的属性也是一个`struct/*struct`,则会在这个属性上调用Map函数,并将其转换为map[string]interface{}类型的变量。 警告:建议使用Map替代。 md5:dc0620a4d15b4389
func X取Map数组 ¶
X取Map数组 将 `value` 转换为 []map[string]interface{} 类型。 注意,如果 `value` 是字符串或[]byte类型,它会自动检查并转换为json字符串到 []map。 md5:cff297515bb58eac
func X取Map数组_递归 ¶
X取Map数组_递归 将 `value` 递归地转换为 []map[string]interface{} 类型。
TODO:完全实现所有类型的递归转换。 已弃用:推荐使用 Maps 替代。 md5:4fca16e80380d63d
func X取any指针 ¶
func X取any指针(值 interface{}) *interface{}
X取any指针 创建并返回一个指向此值的interface{}指针变量。 md5:12130f8892007df6
func X取any数组 ¶
func X取any数组(any interface{}) []interface{}
X取any数组 将 `any` 转换为 []interface{}。 md5:74035d098fdf06f6
func X取gtime时间类 ¶
X取gtime时间类 将 `any` 转换为 *gtime.Time。 参数 `format` 可用于指定 `any` 的格式。 它返回与格式切片中第一个格式匹配的转换值。 如果没有提供 `format`,则当 `any` 为数字时使用 gtime.NewFromTimeStamp 进行转换, 或者当 `any` 为字符串时使用 gtime.StrToTime 进行转换。 md5:a1c7656c4b134443
func X取小数32位 ¶
func X取小数32位(any interface{}) float32
X取小数32位 将 `any` 转换为 float32 类型。 md5:ae355a911909e343
func X取小数32位指针 ¶
func X取小数32位指针(值 interface{}) *float32
X取小数32位指针 创建并返回一个指向此值的 float32 指针变量。 md5:3ccf785d35432892
func X取小数32位数组 ¶
func X取小数32位数组(值 interface{}) []float32
X取小数32位数组 将 `any` 转换为 []float32。 md5:e1b7a8e84a68d538
func X取小数64位 ¶
func X取小数64位(any interface{}) float64
X取小数64位 将 `any` 转换为 float64 类型。 md5:c0bd7cb237571bff
func X取小数64位指针 ¶
func X取小数64位指针(值 interface{}) *float64
X取小数64位指针 创建并返回一个指向此值的float64指针变量。 md5:4ce193832d7c216e
func X取小数64位数组 ¶
func X取小数64位数组(值 interface{}) []float64
X取小数64位数组 将 `any` 转换为 []float64。 md5:f66a670e62a3b46e
func X取小数数组 ¶
func X取小数数组(any interface{}) []float64
X取小数数组 将 `any` 转换为 []float64。 md5:888b7822b64d033c
func X取布尔 ¶
func X取布尔(any interface{}) bool
X取布尔 将 `any` 转换为布尔值。 如果 `any` 是:false,"",0,"false","off","no",空切片/映射,则返回 false。 md5:b9d150a8798a274a
func X取整数16位指针 ¶
func X取整数16位指针(值 interface{}) *int16
X取整数16位指针 创建并返回一个指向此值的 int16 指针变量。 md5:f1ea6c718962fd2e
func X取整数32位指针 ¶
func X取整数32位指针(值 interface{}) *int32
X取整数32位指针 创建并返回一个指向此值的int32指针变量。 md5:7f7072cdeb72f52a
func X取整数32位数组 ¶
func X取整数32位数组(值 interface{}) []int32
X取整数32位数组 将 `any` 转换为 []int32。 md5:3b96167e68fc609e
func X取整数64位 ¶
func X取整数64位(any interface{}) int64
X取整数64位 将 `any` 转换为 int64 类型。 md5:e95a0233b73ea496
func X取整数64位指针 ¶
func X取整数64位指针(值 interface{}) *int64
X取整数64位指针 创建并返回一个指向该值的int64指针变量。 md5:60417c5b51562e51
func X取整数64位数组 ¶
func X取整数64位数组(值 interface{}) []int64
X取整数64位数组 将 `any` 转换为 []int64。 md5:c28e69b40a68187f
func X取整数8位指针 ¶
func X取整数8位指针(值 interface{}) *int8
X取整数8位指针 创建并返回一个指向此值的 int8 指针变量。 md5:135a8560671f447d
func X取整数数组 ¶
func X取整数数组(any interface{}) []int
X取整数数组 将 `any` 类型转换为 []int 类型。 md5:2e68bd53fc00e307
func X取文本Map ¶
X取文本Map 将 `value` 转换为 map[string]string 类型。 注意,对于这种映射类型转换,可能会有数据复制的情况发生。 md5:a1ec9ce0d856cd1e
func X取文本Map_递归 ¶
X取文本Map_递归 递归地将`value`转换为map[string]string。 请注意,这种映射类型的转换可能会涉及数据复制。 已弃用:请使用MapStrStr代替。 md5:79528a85e8ff4c82
func X取文本数组 ¶
func X取文本数组(any interface{}) []string
X取文本数组 将 `any` 转换为 []string。 md5:cbac28ee26158116
func X取时长 ¶
X取时长 将 `any` 转换为 time.X取时长。 如果 `any` 是字符串,那么它使用 time.ParseDuration 进行转换。 如果 `any` 是数字,那么它将 `any` 作为纳秒来转换。 md5:4328f63b0561b4f4
func X取正整数16位 ¶
func X取正整数16位(值 interface{}) uint16
X取正整数16位 将 `any` 转换为 uint16。 md5:7763a0b90bd179e4
func X取正整数16位指针 ¶
func X取正整数16位指针(值 interface{}) *uint16
X取正整数16位指针 创建并返回一个指向此值的uint16指针变量。 md5:7fcfbf0260f97aa5
func X取正整数32位 ¶
func X取正整数32位(值 interface{}) uint32
X取正整数32位 将 `any` 转换为 uint32 类型。 md5:26c3b815ff56d271
func X取正整数32位指针 ¶
func X取正整数32位指针(值 interface{}) *uint32
X取正整数32位指针 创建并返回一个指向该值的uint32指针变量。 md5:95c5b9723ded3fd2
func X取正整数32位数组 ¶
func X取正整数32位数组(值 interface{}) []uint32
X取正整数32位数组 将 `any` 转换为 []uint32。 md5:7a3545642e764e37
func X取正整数64位 ¶
func X取正整数64位(any interface{}) uint64
X取正整数64位 将 `any` 转换为 uint64 类型。 md5:14c7f76fe909ea8e
func X取正整数64位指针 ¶
func X取正整数64位指针(值 interface{}) *uint64
X取正整数64位指针 创建并返回一个指向此值的 uint64 类型指针变量。 md5:85c9fc668348f455
func X取正整数64位数组 ¶
func X取正整数64位数组(值 interface{}) []uint64
X取正整数64位数组 将 `any` 转换为 []uint64。 md5:08b12c62032337ab
func X取正整数8位 ¶
func X取正整数8位(值 interface{}) uint8
X取正整数8位 将 `any` 类型转换为 uint8 类型。 md5:330b11711227c6f3
func X取正整数8位指针 ¶
func X取正整数8位指针(值 interface{}) *uint8
X取正整数8位指针 创建并返回一个指向此值的 uint8 指针变量。 md5:c4901dd67ca1d339
func X取正整数指针 ¶
func X取正整数指针(值 interface{}) *uint
X取正整数指针 创建并返回一个指向此值的无符号整数指针变量。 md5:04c5b5df0b2baa8e
func X取正整数数组 ¶
func X取正整数数组(any interface{}) []uint
X取正整数数组 将 `any` 转换为 []uint。 md5:5be2a9bb94384311
func X字节集到文本_非安全 ¶
X字节集到文本_非安全 将 []byte 转换为 string,而不进行内存复制。 请注意,如果你确定将来绝不会使用 `b` 变量, 可以使用这个不安全的函数来实现高性能的类型转换。 md5:1d73c9ff996784ae
func X按参考值类型转换 ¶
func X按参考值类型转换(值 interface{}, 参考值 interface{}, extraParams ...interface{}) interface{}
X按参考值类型转换 将变量 `fromValue` 转换为由 `referValue` 指定的类型。
可选参数 `extraParams` 用于此转换所需的额外参数。它支持基于类型名称字符串的常见基本类型转换。 md5:0badd37157c72db1
func X按名称转换 ¶
func X按名称转换(值 interface{}, 类型名称 string, extraParams ...interface{}) interface{}
X按名称转换 将变量 `fromValue` 转换为类型 `toTypeName`,其中 `toTypeName` 由字符串指定。
可选参数 `extraParams` 用于提供此转换所需的额外参数。 它支持基于类型名称字符串的常见基本类型转换。 md5:e081c8fc6552be4c
func X文本到字节集_非安全 ¶
X文本到字节集_非安全 将字符串转换为 []byte,其间不进行内存复制。 注意,如果您完全确定将来绝不会使用 `s` 变量, 您可以使用这个不安全的函数来实现高性能的类型转换。 md5:2ea7b3663055237b
Types ¶
type MapOption ¶
type MapOption struct { // Deep 标记表示递归地执行 Map 函数,这意味着如果给定转换值的属性也是一个结构体(struct),它会自动对这个属性调用 Map 函数,将其转换为 map[string]interface{} 类型变量。 // md5:3653359965fb222d Deep bool // OmitEmpty 忽略具有 json `omitempty` 标签的属性。 md5:ce80b66cfe17a0ba OmitEmpty bool // Tags 指定了通过结构体标签名转换后的映射键名称。 md5:b08e40ad043d7120 Tags []string }
MapOption 定义了映射转换的选项。 md5:8dc53d6fdc486bf8
Source Files ¶
- gconv.go
- gconv_convert.go
- gconv_converter.go
- gconv_float.go
- gconv_int.go
- gconv_interface.go
- gconv_map.go
- gconv_maps.go
- gconv_maptomap.go
- gconv_maptomaps.go
- gconv_ptr.go
- gconv_scan.go
- gconv_scan_list.go
- gconv_slice_any.go
- gconv_slice_float.go
- gconv_slice_int.go
- gconv_slice_str.go
- gconv_slice_uint.go
- gconv_struct.go
- gconv_structs.go
- gconv_time.go
- gconv_uint.go
- gconv_unsafe.go