通过反射获取方法受接收者是否为指针的影响

时间:2019-05-06 13:57:54

标签: go

我使用Go的反射函数来获取方法的类型,但是我发现可以获取的方法与接收方是否为指针有关。为什么会这样?

当我运行下面的代码时,我得到了以下结果。


--- value interface ---
Test
--- pointer interface ---
Test
ToString

我不明白Method方法获得的结果与接收者是否是指针有什么关系。

type User struct{}
type Admin struct{ User }

func (*User) ToString() {
    fmt.Println("tostring")
}

func (Admin) Test() {
    fmt.Println("test")
}
func main27() { 
    var u Admin
    methods := func(t reflect.Type) {
        for i, n := 0, t.NumMethod(); i < n; i++ {
            m := t.Method(i)
            fmt.Println(m.Name)
        }
    }
    fmt.Println("--- value interface ---")
    methods(reflect.TypeOf(u)) 
    fmt.Println("--- pointer interface ---")
    methods(reflect.TypeOf(&u))
}

0 个答案:

没有答案