版权声明:本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/weixin_43851310/article/details/87919651
反射 reflect
反射是获取类型的信息的方法
TypeOf
func TypeOf(i interface{}) Type
TypeOf返回接口中保存的值的类型,TypeOf(nil)会返回nil。
反射对象的类型
ValueOf
func ValueOf(i interface{}) Value
ValueOf返回一个初始化为i接口保管的具体值的Value,ValueOf(nil)返回Value零值。
反射对象的值
NumField
func (v Value) NumField() int
返回v持有的结构体类型值的字段数,如果v的Kind不是Struct会panic
Kind代表Type类型值表示的具体分类
Field
扫描二维码关注公众号,回复:
5424026 查看本文章
func (v Value) Field(i int) Value
返回结构体的第i个字段(的Value封装)。如果v的Kind不是Struct或i出界会panic
通过对象反射类
type Student struct {
name string "姓名"
age int "年龄"
}
func main() {
var stu Student=Student{"tom",23}
t:=reflect.TypeOf(stu) //反射对象的类型
v:=reflect.ValueOf(stu) //反射对象的值
for i:=0;i<t.NumField();i++{
fmt.Println("字段名:",t.Field(i).Name,"| 值:",v.Field(i),"|
备注:",t.Field(i).Tag,"| 类型:",t.Field(i).Type)
}
}
Output:
字段名: name | 值: tom | 备注: 姓名 | 类型: string
字段名: age | 值: 23 | 备注: 年龄 | 类型: int