基本介绍

主要用于嵌入到用户自定义的结构体中,并且通过标签的形式给 gmeta 包的结构体打上自定义的标签内容(元数据),并在运行时可以特定方法动态获取这些自定义的标签内容。

使用方式:

  1. import "github.com/gogf/gf/v2/util/gmeta"

接口文档

https://pkg.go.dev/github.com/gogf/gf/v2/util/gmeta

方法列表:

  1. func Data(object interface{}) map[string]interface{}
  2. func Get(object interface{}, key string) *gvar.Var

使用示例

Data 方法

Data 方法用于获取指定 struct 对象的元数据标签,构成 map 返回。

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/gogf/gf/v2/frame/g"
  5. "github.com/gogf/gf/v2/util/gmeta"
  6. )
  7. func main() {
  8. type User struct {
  9. g.Meta `orm:"user" db:"mysql"`
  10. Id int
  11. Name string
  12. }
  13. g.Dump(gmeta.Data(User{}))
  14. }

元数据-gmeta - 图1提示

大部分时候,在结构体定义中,我们使用的gmeta.Meta的别名g.Meta

执行后,终端输出:

  1. {
  2. "db": "mysql",
  3. "orm": "user"
  4. }

Get 方法

Get 方法用于获取指定 struct 对象中指定名称的元数据标签信息。

  1. package main
  2. import (
  3. "fmt"
  4. "github.com/gogf/gf/v2/util/gmeta"
  5. )
  6. func main() {
  7. type User struct {
  8. g.Meta `orm:"user" db:"mysql"`
  9. Id int
  10. Name string
  11. }
  12. user := User{}
  13. fmt.Println(gmeta.Get(user, "orm").String())
  14. fmt.Println(gmeta.Get(user, "db").String())
  15. }

执行后,终端输出:

  1. user
  2. mysql