无法获得通过反射调用的方法的返回字符串值恐慌:接口转换:接口是[]reflect.Value,而不是字符串package mainimport ( "reflect")type API_EndPoint struct{}func main() { var ep API_EndPoint s := reflect.ValueOf(&ep).MethodByName("EndPoint_X").Call([]reflect.Value{reflect.ValueOf(`foo bar`)}) v := reflect.ValueOf(s) i := v.Interface() a := i.(string) println(a)}func (ep *API_EndPoint) EndPoint_X(params string) string { return "this_is_a_string" + params}
1 回答
森林海
TA贡献2011条经验 获得超2个赞
.Call返回 a sliceof reflect.Valueso 做你想做的事情,你需要做这样的事情:
package main
import ("reflect")
type API_EndPoint struct {}
func main() {
var ep API_EndPoint
s := reflect.ValueOf(&ep).MethodByName("EndPoint_X").Call([]reflect.Value{reflect.ValueOf(`foo bar`)})
v := reflect.ValueOf(s)
i := v.Interface()
a := i.([]reflect.Value)[0].String() // Get the first index of the slice and call the .String() method on it
println(a)
}
func (ep *API_EndPoint) EndPoint_X( params string) string{
return "this_is_a_string " + params
}
https://play.golang.org/p/MtqCrshTcH
this_is_a_string foo bar
不确定你想要完成什么,但这应该有效。
- 1 回答
- 0 关注
- 145 浏览
添加回答
举报
0/150
提交
取消