您的位置:58编程 > GoFrame 对象信息-gstructs

GoFrame 对象信息-gstructs

2023-05-11 12:33 GoFrame教程

 GoFrame 对象信息-gstructs

基本介绍

gstructs​组件用于方便获取结构体的相关信息。

这是一个偏底层组件,一般业务上很少会用到,在框架、基础库、中间件编写中用到。

使用方式:

import "github.com/gogf/gf/v2/os/gstructs"

接口文档:

https://pkg.go.dev/github.com/gogf/gf/v2/os/gstructs

常用方法

Fields

  • 说明:​Fields ​将输入参数​in​的 ​Pointer ​属性的字段以​Field​切片的形式返回。
  • 格式:

Fields(in FieldsInput) ([]Field, error)

  • 示例:

func main() {
	type User struct {
		Id   int
		Name string `params:"name"`
		Pass string `my-tag1:"pass1" my-tag2:"pass2" params:"pass"`
	}
	var user *User
	fields, _ := gstructs.Fields(gstructs.FieldsInput{
		Pointer:         user,
		RecursiveOption: 0,
	})

	g.Dump(fields)
}

// Output:
[
    {
        Value:    "<int Value>",
        Field:    {
            Name:      "Id",
            PkgPath:   "",
            Type:      "int",
            Tag:       "",
            Offset:    0,
            Index:     [
                0,
            ],
            Anonymous: false,
        },
        TagValue: "",
    },
    {
        Value:    {},
        Field:    {
            Name:      "Name",
            PkgPath:   "",
            Type:      "string",
            Tag:       "params:"name"",
            Offset:    8,
            Index:     [
                1,
            ],
            Anonymous: false,
        },
        TagValue: "",
    },
    {
        Value:    {},
        Field:    {
            Name:      "Pass",
            PkgPath:   "",
            Type:      "string",
            Tag:       "my-tag1:"pass1" my-tag2:"pass2" params:"pass"",
            Offset:    24,
            Index:     [
                2,
            ],
            Anonymous: false,
        },
        TagValue: "",
    },
]

TagMapName

  • 说明:​TagMapName​从参数​pointer​中检索​tag​,并以​map[string]string​的形式返回。  
  • 注意:
    • 参数​pointer​的类型应该是 ​struct/*struct​。
    • 只会返回可导出的字段(首字母大写的字段)。
  • 格式:

TagMapName(pointer interface{}, priority []string) (map[string]string, error)

  • 示例:

func main() {
	type User struct {
		Id   int
		Name string `params:"name"`
		Pass string `my-tag1:"pass1" my-tag2:"pass2" params:"pass"`
	}
	var user User
	m, _ := gstructs.TagMapName(user, []string{"params"})

	g.Dump(m)
}

// Output:
{
    "name": "Name",
    "pass": "Pass",
}


阅读全文
以上是58编程为你收集整理的 GoFrame 对象信息-gstructs全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 58编程 58biancheng.com 版权所有 联系我们
桂ICP备12005667号-32 Powered by CMS