为了账号安全,请及时绑定邮箱和手机立即绑定

无法获得通过反射调用的方法的返回字符串值

无法获得通过反射调用的方法的返回字符串值

Go
交互式爱情 2021-12-06 19:34:11
无法获得通过反射调用的方法的返回字符串值恐慌:接口转换:接口是[]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


不确定你想要完成什么,但这应该有效。


查看完整回答
反对 回复 2021-12-06
  • 1 回答
  • 0 关注
  • 145 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信