本篇内容介绍了“GoFrame框架Scan类型如何转换”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
前言
Scan转换方法可以实现对任意参数到struct/struct数组/map/map数组的转换,并且根据开发者输入的转换目标参数自动识别执行转换。
方法定义
// Scan automatically calls MapToMap, MapToMaps, Struct or Structs function according to// the type of parameter `pointer` to implement the converting.// It calls function MapToMap if `pointer` is type of *map to do the converting.// It calls function MapToMaps if `pointer` is type of *[]map/*[]*map to do the converting.// It calls function Struct if `pointer` is type of *struct/**struct to do the converting.// It calls function Structs if `pointer` is type of *[]struct/*[]*struct to do the converting.func Scan(params interface{}, pointer interface{}, mapping ...map[string]string) (err error)
自动识别转换Struct结构体
示例代码
package mainimport ("github.com/gogf/gf/frame/g""github.com/gogf/gf/util/gconv")func main() {type User struct {Uid intName string}params := g.Map{"uid": 1,"name": "王中阳",}var user *Userif err := gconv.Scan(params, &user); err != nil {panic(err)}g.Dump(user)}
运行结果
自动识别转换Struct数组
示例代码
package mainimport ("github.com/gogf/gf/frame/g""github.com/gogf/gf/util/gconv")func main() {type User struct {Uid intName string}params := g.Slice{g.Map{"uid": 1,"name": "优弧",},g.Map{"uid": 2,"name": "船长",},}var users []*Userif err := gconv.Scan(params, &users); err != nil {panic(err)}g.Dump(users)}
运行结果
自动识别转换Map
示例代码
package mainimport ("github.com/gogf/gf/frame/g""github.com/gogf/gf/util/gconv")func main() {var (user map[string]stringparams = g.Map{"uid": 1,"name": "王中阳",})if err := gconv.Scan(params, &user); err != nil {panic(err)}g.Dump(user)}
运行结果
自动识别转换Map数组
示例代码
package mainimport ("github.com/gogf/gf/frame/g""github.com/gogf/gf/util/gconv")func main() {var (users []map[string]stringparams = g.Slice{g.Map{"uid": 1,"name": "优弧",},g.Map{"uid": 2,"name": "船长",},})if err := gconv.Scan(params, &users); err != nil {panic(err)}g.Dump(users)}
运行结果
“GoFrame框架Scan类型如何转换”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!