![b125f65c94615516614ae9a6165f00fa.gif](https://i-blog.csdnimg.cn/blog_migrate/9236c0649300e573f369e69a63ff4260.gif)
点击上方蓝字关注我们
如何查看一个对象下有哪些方法和属性
如果导入了一个不太熟悉的第三方包,这个时候就需要知道他包含哪些属性和方法,这个时候使用reflect就可以知道了。
//代码部分
package mainimport ( "fmt" "reflect" "testing")type User struct { Name string}func (u *User) A() { fmt.Println("hello")}func (u *User) B(name string) { fmt.Printf("Name:%s\n", name)}func (u *User) C(name string, age int) { fmt.Printf("Name:%s,Age:%d", name, age)}func TestReflect(t *testing.T) { u := &User{Name:"ABC"} value := reflect.ValueOf(u) vtype := value.Type() for i := 0; i < value.NumMethod(); i++ { fmt.Println(fmt.Sprintf("method[%d]%s and type is %v", i, vtype.Method(i).Name, vtype.Method(i).Type)) }}
//输出信息
=== RUN TestReflectmethod[0]A and type is func(*main.User)method[1]B and type is func(*main.User, string)method[2]C and type is func(*main.User, string, int)--- PASS: TestReflect (0.00s)PASS
END