Go语言使用反射获取结构体中的Tag信息

Go语言使用反射获取结构体中的Tag信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
package main

import (
"fmt"
"reflect"
)

type Cat struct {
Name string
Attr string `json:"attr" id:"222"`
}

func main() {
ins := Cat{
Name: "BBA",
Attr: "BNW",
}
t := reflect.TypeOf(ins)

for i := 0; i < t.NumField(); i++ {
field := t.Field(i)
fmt.Println(field.Name)
fmt.Println(field.Type)
fmt.Println(field.Tag)
}

fmt.Println("--------------------------")
if f, ok := t.FieldByName("Attr"); ok {
fmt.Println(f.Tag.Get("json"))
fmt.Println(f.Tag.Get("id"))
}
}
1
2
3
4
5
6
7
8
9
10

Name
string

Attr
string
json:"attr" id:"222"
--------------------------
attr
222