功能 – 如何正确使用.Call in reflect package,Golang?
发布时间:2020-12-16 19:19:39 所属栏目:大数据 来源:网络整理
导读:我的代码最后一个问题涉及到反射包中的.Call函数. 所以我正在打这样的电话: params := "some map[string][]string"in := make([]reflect.Value,0)return_values := reflect.ValueOf(controller_ref).MethodByName(action_name).Call(in) 我正在制作.Call的
我的代码最后一个问题涉及到反射包中的.Call函数.
所以我正在打这样的电话: params := "some map[string][]string" in := make([]reflect.Value,0) return_values := reflect.ValueOf(&controller_ref).MethodByName(action_name).Call(in) 我正在制作.Call的方法如下: func (c *Controller) Root(params map[string][]string) map[string] string{} 我不太明白的是如何操纵“in”变量以便将我需要的地图正确传递到函数中.我看到make()中的第二个参数是参数的长度?但我不太明白如何格式化变量以正确传递我的参数.我递归地运行错误消息: reflect: Call with too few input arguments 任何帮助将非常感激!
从
Value.Call documentation :
因此,如果要使用一个参数调用函数,则必须包含一个reflect.Value 表达方式 in := make([]reflect.Value,0) 创建一个长度为0的切片.将此传递给Value.Call将导致您收到的恐慌 正确的电话会是: m := map[string][]string{"foo": []string{"bar"}} in := []reflect.Value{reflect.ValueOf(m)} myMethod.Call(in) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |