在Go语言中,使用reflect
包可以对类型信息,类型的值进行获取和设置,分别用Type
和Value
表示。
可以定义一个类型,并且为类型声明一个方法
1 | type Person struct { |
TypeOf
用于获取Type
信息,如
1 | // Type |
Kind()
方法用于表示是哪种类型的,如struct
, int
, string
等。Name
方法表示类名,NumField
表示字段的个数,NumMethod
表示方法的个数。
ValueOf
用于获取Value
信息,如
1 | // Value |
Interface
方法用于获取具体的值,CanSet
表示是否可以修改原始类型的值,如果返回false,则不能调用CanXXX()
类型的方法用来设置字段的值,也不能调用Call
方法用来调用方法。
1 | // 指针的Value |
可以通过传入指针类型对象来对原始对象的字段进行修改,或者调用方法,如
1 | // Field Set |
也可以调用Call
方法来调用具体某个方法,如
1 | // Method Call |