面试题答案
一键面试- 获取结构体字段标签值的步骤:
- 使用
reflect.TypeOf
获取结构体的类型对象。 - 通过类型对象的
NumField
方法获取结构体字段的数量。 - 遍历每个字段,使用
Field(i)
方法获取每个字段的StructField
结构体,其中i
是字段的索引。 - 从
StructField
结构体的Tag
字段获取标签值,Tag
是一个字符串类型,通过键值对形式存储标签信息,可以通过标签名作为键获取对应的值。
- 使用
- 示例代码:
package main
import (
"fmt"
"reflect"
)
// 定义一个带有标签的结构体
type Person struct {
Name string `json:"name" xml:"name"`
Age int `json:"age" xml:"age"`
}
func main() {
p := Person{"John", 30}
t := reflect.TypeOf(p)
for i := 0; i < t.NumField(); i++ {
field := t.Field(i)
jsonTag := field.Tag.Get("json")
xmlTag := field.Tag.Get("xml")
fmt.Printf("Field: %s, JSON Tag: %s, XML Tag: %s\n", field.Name, jsonTag, xmlTag)
}
}
上述代码中:
- 首先定义了
Person
结构体,其字段Name
和Age
带有json
和xml
标签。 - 在
main
函数中,使用reflect.TypeOf
获取Person
结构体的类型。 - 通过循环遍历每个字段,使用
Field(i)
获取字段信息,再通过Tag.Get
方法获取json
和xml
标签的值,并打印出来。