golang中的函数是如何存储的, 通过反射获取了一个方法的内存,这个内存是怎么样的存在?

package main

import (
    "fmt"
    "reflect"
)
type A struct {
    name string
}
func (this *A) Aaa(a int) {
    fmt.Print(this.name + "你好")
}
func main() {
    a := &A{"zhang"}
    tp := reflect.ValueOf(a)
    fn := tp.MethodByName("Aaa")
    p := fn.Interface()
    if val, ok := p.(func(a int)); ok {
        fmt.Print(val)
        val(1)
    }
}

我想搞清楚这个val到底是个什么东西?
我在写一个自动路由系统, 想把反射的结果缓存起来,得到一个方法; 是得到方法了,但是有点绕, 现在对缓存的这个方法有点搞不懂了. 求分析.

共 0 个回复