2
calling a method by name에 대한 질문을 시작점으로 사용하여 메서드를 이름으로 호출하고 실제로 값을 사용하여 작업하고 싶습니다.리플렉션을 사용하여 메서드 호출 및 값 반환
prog.go:30: cannot use reflect.ValueOf(t).MethodByName("Bar").Call([]reflect.Value literal) (type []reflect.Value) as type int in assignment
[process exited with non-zero status]
내가 다르게해야 실제로 값을 반환하기 :
package main
import "fmt"
import "reflect"
type T struct{}
func (t *T) Foo() {
fmt.Println("foo")
}
type MyStruct struct {
id int
}
type Person struct {
Name string
Age int
}
func (t *T) Bar(ms *MyStruct, p *Person) int {
return p.Age
}
func main() {
var t *T
reflect.ValueOf(t).MethodByName("Foo").Call([]reflect.Value{})
var ans int
ans = reflect.ValueOf(t).MethodByName("Bar").Call([]reflect.Value{reflect.ValueOf(&MyStruct{15}), reflect. ValueOf(&Person{"Dexter", 15})})
}
Playground link, http://play.golang.org/p/e02-KpdQ_P
그러나, 나는 다음과 같은 오류가 발생합니다? 나는 유형 변환을 사용하여 그것을 int
으로 만들려고했지만 컴파일러는 []reflect.Value
을 사용할 수 없다고 말했다.