类型转换-Structs转换

基本介绍

我们之前提到可以使用Struct方法实现对struct对象的转换,那么我们当然也可以实现对struct数组的转换,struct数组转换使用的是Structs方法实现。Structs方法建立在Struct方法的基础之上,所有的转换规则与Struct相同,只是增加了对struct数组类型的支持。在了解Structs方法之前,建议您先了解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",
    },
]