基本介绍

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

方法定义

Structs 方法定义如下:

  1. // Structs converts any slice to given struct slice.
  2. func Structs(params interface{}, pointer interface{}, mapping ...map[string]string) (err error)

其中 pointer 目标转换参数类型需要为 *[]struct/*[]*struct

使用示例

我们来看一个简单示例即可理解。

  1. package main
  2. import (
  3. "github.com/gogf/gf/v2/frame/g"
  4. "github.com/gogf/gf/v2/util/gconv"
  5. )
  6. func main() {
  7. type User struct {
  8. Uid int
  9. Name string
  10. }
  11. params := g.Slice{
  12. g.Map{
  13. "uid": 1,
  14. "name": "john",
  15. },
  16. g.Map{
  17. "uid": 2,
  18. "name": "smith",
  19. },
  20. }
  21. var users []*User
  22. if err := gconv.Structs(params, &users); err != nil {
  23. panic(err)
  24. }
  25. g.Dump(users)
  26. }

执行后,终端输出:

  1. [
  2. {
  3. Uid: 1,
  4. Name: "john",
  5. },
  6. {
  7. Uid: 2,
  8. Name: "smith",
  9. },
  10. ]