猿问

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

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


恐慌:接口转换:接口是[]reflect.Value,而不是字符串


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.(string)


        println(a)


}


func (ep *API_EndPoint) EndPoint_X(params string) string {


        return "this_is_a_string" + params


}


交互式爱情
浏览 146回答 1
1回答

森林海

.Call返回 a sliceof reflect.Valueso 做你想做的事情,你需要做这样的事情:package mainimport ("reflect")type API_EndPoint struct {}func main() {var ep API_EndPoints := 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 itprintln(a) }func (ep *API_EndPoint) EndPoint_X( params string) string{        return "this_is_a_string " + params}https://play.golang.org/p/MtqCrshTcHthis_is_a_string foo bar不确定你想要完成什么,但这应该有效。
随时随地看视频慕课网APP

相关分类

Go
我要回答