Golang 中国

有一段代码如下:

        vc := reflect.New(runrouter.controllerType)
        init := vc.MethodByName("Init")
        in := make([]reflect.Value, 2)
        ct := &Context{ResponseWriter: w, Request: r, Params: params}
        in[0] = reflect.ValueOf(ct)
        in[1] = reflect.ValueOf(runrouter.controllerType.Name())
        init.Call(in)

        in = make([]reflect.Value, 0)
        method := vc.MethodByName("Prepare")
        method.Call(in)

就是在这里调用了Controller对象的Init(ctx *Context, cn string)方法 看不懂,求教! 另外请教reflect包下的

type Value struct {
     typ *commonType
     val unsafe.Pointer
     flag
}

到底是些什么东西?


bianweiall 于 2013-03-07 15:48 修改
1 回复
polaris
#1 polaris • 2013-03-07 16:06

首先,不知道你对反射概念了解不? 如果不了解反射是个啥东东,建议查查

reflect.Value代表一个值,比如;var a int = 2,reflect.Value就代表一个int类型的值,相应的reflect.Type代表一个类型

上面的代码,就是通过反射new一个实例,然后调用相应的方法。

注意:具体的方法是一个Value

总之,如果这段代码完全看不懂,说明对反射概念不理解,还是先理解一下反射吧

需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。