package main
import (
"fmt"
"reflect"
)
func main() {
funcMap := map[string]reflect.Value{}
w := &worker{}
for i := 0; i < reflect.TypeOf(w).NumMethod(); i++ {
funcMap[reflect.TypeOf(w).Method(i).Name] = reflect.ValueOf(w).Method(i)
}
funcMap["Say"].Call(nil)
funcMap["Walk"].Call(nil)
funcMap["Do"].Call([]reflect.Value{reflect.ValueOf("运动")})
funcMap["See"].Call([]reflect.Value{reflect.ValueOf("南海"), reflect.ValueOf("东海")})
}
type worker struct{}
func (*worker) Say() {
fmt.Println("你说,你说,你。。。")
}
func (*worker) Walk() {
fmt.Println("你走,你走,你。。。")
}
func (*worker) Do(sth string) {
fmt.Println("做: ", sth)
}
func (*worker) See(swh ...string) {
fmt.Println("看: ", swh)
}