在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 |