温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

GoFrame框架Scan类型如何转换

发布时间:2022-06-10 11:49:54 来源:亿速云 阅读:162 作者:iii 栏目:开发技术

本篇内容介绍了“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 main
    import (
    	"github.com/gogf/gf/frame/g"
    	"github.com/gogf/gf/util/gconv"
    )
    func main() {
    	type User struct {
    		Uid  int
    		Name string
    	}
    	params := g.Map{
    		"uid":  1,
    		"name": "王中阳",
    	}
    	var user *User
    	if err := gconv.Scan(params, &user); err != nil {
    		panic(err)
    	}
    	g.Dump(user)
    }

    运行结果

    GoFrame框架Scan类型如何转换

    自动识别转换Struct数组

    示例代码

    package main
    import (
    	"github.com/gogf/gf/frame/g"
    	"github.com/gogf/gf/util/gconv"
    )
    func main() {
    	type User struct {
    		Uid  int
    		Name string
    	}
    	params := g.Slice{
    		g.Map{
    			"uid":  1,
    			"name": "优弧",
    		},
    		g.Map{
    			"uid":  2,
    			"name": "船长",
    		},
    	}
    	var users []*User
    	if err := gconv.Scan(params, &users); err != nil {
    		panic(err)
    	}
    	g.Dump(users)
    }

    运行结果

    GoFrame框架Scan类型如何转换

    自动识别转换Map

    示例代码

    package main
    import (
    	"github.com/gogf/gf/frame/g"
    	"github.com/gogf/gf/util/gconv"
    )
    func main() {
    	var (
    		user   map[string]string
    		params = g.Map{
    			"uid":  1,
    			"name": "王中阳",
    		}
    	)
    	if err := gconv.Scan(params, &user); err != nil {
    		panic(err)
    	}
    	g.Dump(user)
    }

    运行结果

    GoFrame框架Scan类型如何转换

    自动识别转换Map数组

    示例代码

    package main
    import (
    	"github.com/gogf/gf/frame/g"
    	"github.com/gogf/gf/util/gconv"
    )
    func main() {
    	var (
    		users  []map[string]string
    		params = 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类型如何转换

    “GoFrame框架Scan类型如何转换”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI