我们之前提到可以使用Struct
方法实现对struct
对象的转换,那么我们当然也可以实现对struct
数组的转换,struct
数组转换使用的是Structs
方法实现。Structs
方法建立在Struct方法的基础之上,所有的转换规则与Struct
相同,只是增加了对struct
数组类型的支持。
Structs
方法定义如下:
// Structs converts any slice to given struct slice.
func Structs(params interface{}, pointer interface{}, mapping ...map[string]string) (err error)
其中pointer
目标转换参数类型需要为*[]struct/*[]struct
我们来看一个简单示例即可理解。
package main
import (
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/util/gconv"
)
func main() {
type User struct {
Uid int
Name string
}
params := g.Slice{
g.Map{
"uid": 1,
"name": "john",
},
g.Map{
"uid": 2,
"name": "smith",
},
}
var users []*User
if err := gconv.Structs(params, &users); err != nil {
panic(err)
}
g.Dump(users)
}
执行后,终端输出:
[
{
"Uid": 1,
"Name": "john"
},
{
"Uid": 2,
"Name": "smith"
}
]
gview模板引擎支持两种layout模板布局方式:define+template方式include模板嵌入方式这两种方式均支持对模板...
在本章节中,我们将之前介绍HTTPClientServer的示例修改为GRPC微服务,并演示如何使用GoFrame框架开发一个简单的G...
ORM支持传递自定义的context上下文变量,用于异步IO控制、上下文信息传递(特别是链路跟踪信息的传递)、以及嵌套事...
资源管理设计的目标之一是在开发阶段不影响静态文件的开发管理,只有在发布的时候执行打包即可,打包完毕后清理临时文件,因此只...
基本介绍支持并发安全开关选项的map容器,最常用的数据结构。该模块包含多个数据结构的map容器:HashMap、TreeMap和List...