结构体反射
概念说明
结构体反射可以在运行时读取字段信息。
例如字段名、字段类型、字段 tag、字段当前值等。
这类能力常用于 JSON、表单绑定、ORM、配置解析等框架场景。
语法/规则
- 使用
reflect.TypeOf(structValue)获取结构体类型。 - 使用
reflect.ValueOf(structValue)获取结构体值。 - 使用
NumField()获取字段数量。 - 使用
Type.Field(i)获取字段元信息。 - 使用
Value.Field(i)获取字段值。 - 读取 tag 可以使用
field.Tag.Get("json")。
读取结构体字段示例
| |
输出结果:
| |
常见错误
- 把结构体指针直接当成结构体处理,忘记先调用
Elem()。 - 读取未导出字段的
Interface(),可能触发 panic。 - 以为 tag 会自动生效,实际 tag 只是字符串元信息,需要代码或库去读取。