返回顶部
首页 > 资讯 > 后端开发 > GO >GoFrame框架Scan类型转换实例
  • 399
分享到

GoFrame框架Scan类型转换实例

2024-04-02 19:04:59 399人浏览 泡泡鱼
摘要

目录前言方法定义自动识别转换Struct结构体示例代码运行结果自动识别转换Struct数组示例代码运行结果自动识别转换Map示例代码运行结果自动识别转换Map数组示例代码运行结果总结

前言

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)
}

运行结果

自动识别转换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)
}

运行结果

自动识别转换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)
}

运行结果

自动识别转换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)
}

运行结果

总结

我们使用Go语言的开发过程中,JSON数据和结构体的转换是经常遇到的。

GoFrame为我们封装了Scan转换方法可以实现对任意参数到struct/struct数组/map/map数组的转换,并且根据开发者输入的转换目标参数自动识别执行转换。

以上就是GoFrame框架Scan类型转换实例的详细内容,更多关于GoFrame框架Scan类型转的资料请关注编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: GoFrame框架Scan类型转换实例

本文链接: https://lsjlt.com/news/151064.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • GoFrame框架Scan类型转换实例
    目录前言方法定义自动识别转换Struct结构体示例代码运行结果自动识别转换Struct数组示例代码运行结果自动识别转换Map示例代码运行结果自动识别转换Map数组示例代码运行结果总结...
    99+
    2024-04-02
  • GoFrame框架Scan类型如何转换
    本篇内容介绍了“GoFrame框架Scan类型如何转换”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言Scan转换方法可以实现对任意参数到...
    99+
    2023-07-02
  • GoFrame框架gredis优雅的取值和类型转换
    目录取值方法不推荐推荐DoVar示例ReceiveVar示例HashSet示例小技巧总结上一篇文章为大家介绍了 GoFrame gcache使用实践 | 缓存控制 淘汰策略 ,得到了大家积极的反馈。 后续几篇文章再接再厉...
    99+
    2022-06-15
    GoFramegredis取值类型转换 GoFrame框架 GoFramegredis
  • MySQL显式类型转换实例
    小编给大家分享一下MySQL显式类型转换实例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!undefined在之前的文章中,我们...
    99+
    2024-04-02
  • C#类型转换实例分析
    这篇“C#类型转换实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#类型转换实例分析”文章吧。C# 类型转...
    99+
    2023-06-17
  • GoFrame框架gset交差并补集使用实例
    目录使用场景方法介绍Intersect: 交集Diff: 差集Union: 并集Complement: 补集举例总结上一篇文章:GoFrame gset使用入门 | 对比P...
    99+
    2024-04-02
  • struts2中类型转换实例代码
    类型转换        所有的页面与控制器传递的数据都是String类型,在对其进行处理时可能会用到各种的数据类型,程序无法自动完成数据类型的转换,这就需要我们在代码中进...
    99+
    2023-05-31
    struts2 类型转换 中类
  • [Java List类型和Map类型想换转换案例]
    目录 1. List转Map 2. Map转List 3. List转Map并保留重复Key 4. Map转List并保留Key值 5 简单版 可以通过遍历List,将List中的元素转换为Map中的键值对 6:通过遍历Map,将Map中...
    99+
    2023-09-11
    java 开发语言
  • Golang泛型实现类型转换的方法实例
    目录1.前言2.To String3.To Other Type3.泛型4.使用示例5.go-huge-util参考文献总结1.前言 Golang 标准库提供了很多类型转换的函数,如...
    99+
    2022-12-30
    Golang泛型 golang数据类型转换 golang类型转换
  • GoFrame代码优化gconv类型转换避免重复定义map
    目录前言核心重点优化前优化后:可以这么写的原因进一步优化 批量写入更优雅的写法如下总结前言 最近一直在研究 GoFrame 框架,经过一段时间的使用、总结、思考,发现确实不失为一款非...
    99+
    2024-04-02
  • JavaScript数据类型转换实例分享
    本篇内容介绍了“JavaScript数据类型转换实例分享”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言 什么是数据类型转换?使...
    99+
    2023-06-20
  • PHP类型转换实例代码分析
    今天小编给大家分享一下PHP类型转换实例代码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。基本数据类型首先,我们需要了解...
    99+
    2023-07-05
  • java如何实现类型转换与强制类型转换
    这篇文章主要介绍了java如何实现类型转换与强制类型转换,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。java类型转换与强制类型转换如果你以前有编程经验,那么你已经知道把一种...
    99+
    2023-06-03
  • JavaScript数据类型转换实例(其他类型转字符串、数值型、布尔类型)
    前言  什么是数据类型转换? 使用表单、prompt 获取过来的数据默认类型是字符串类型的,此时就不能直接进行加减法运算,而需要转换变量的数据类型。 通俗来说,数据类型转...
    99+
    2024-04-02
  • php中日期类型转换实例讲解
    1、使用date()函数将UNIX时间戳转换为日期。 2、使用strtotime()函数将日期转换为UNIX时间戳。 在PHP中是可以完成日期格式转换的,不过有一个缺点就是占用PHP...
    99+
    2024-04-02
  • MybatisPlus字段类型转换的实现示例
    目录resultMap的作用是什么mybatisPlus如何完成字段映射自动映射@TableField是能够指定jdbcType的mybatis如何完成查询参数转换先来回忆下在myb...
    99+
    2023-03-15
    MybatisPlus 字段类型转换 MybatisPlus 类型转换
  • SQL中CAST()实例之转换数据类型
    目录1.CAST()的语法及用法(1)语法:CAST(Expression AS Data_type)(2)用法:2.CAST()的实例(1)将文本(字符串)时间转为日期格式,获取日期格式的字段(2)与其它语法进行结合使...
    99+
    2023-01-13
    sql cast() sql转换数据类型 sql转换数据类型语句
  • JavaScript中类型转换的示例
    小编给大家分享一下JavaScript中类型转换的示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、类型转换是什么?我们都知道变量的类型由它存储的值的类型来决...
    99+
    2023-06-08
  • numpy数据类型dtype转换实现的示例
    小编给大家分享一下numpy数据类型dtype转换实现的示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!导入numpy>>> imp...
    99+
    2023-06-14
  • springMVC4之强大类型转换器实例解析
    我们以自定义格式转换器的实现思路,来理解新架构的类型转换器的使用方法,同时在实际开发中,我们可能会有自己的格式转换需求,这个时候我们也可以通过自定义格式转换器来完成这些个性化需求。自定义格式转换器完成自定义转换器需要实现以下三个中的任意一个...
    99+
    2023-05-31
    springmvc 类型转换器 sprin
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作