我正在进行一个反射函数调用,但我目前困在尝试获取返回值的过程中。
示例代码:
如何正确获取“值”的返回值并将其返回?
谢谢。
示例代码:
func (c *Client) Send(funcName protoFunction, data interface{}) (interface{}, error) {
funcList := c.GetProtoFuncList()
ctx := context.Background()
f := reflect.ValueOf(funcList[funcName.String()])
vals := make([]reflect.Value, 2)
vals[0] = reflect.ValueOf(ctx)
vals[1] = reflect.ValueOf(data)
value := f.Call(vals)
log.Debug(value)
return nil, nil
}
如何正确获取“值”的返回值并将其返回?
谢谢。
value
将是返回值的一个切片。你遇到了什么问题? - AdrianCall
签名,您的value
是一个[]reflect.Value
。您甚至打印了这个。问题到底是什么? - JimBreturn funcList[funcName.String()].(func(context.Context, interface{})) (interface{}, error)) (ctx, data)
?(如果存储在funcList
中的函数类型相同,则不需要类型断言甚至可以将其摆脱,变成return funcList[funcName.String()](ctx, data)
。) - icza