共计 543 个字符,预计需要花费 2 分钟才能阅读完成。
1. 反射之用字符串函数名调用函数
package main
import (
"fmt"
"reflect"
)
/**
通过反射获取它对应的函数,而后通过 call 来调用
*/
func main() {var animal = Animal{}
val := reflect.ValueOf(&animal)
f := val.MethodByName("Eat")
f.Call([]reflect.Value{})
// 传参
f3 := val.MethodByName("SetName")
params := make([]reflect.Value,1)
params[0] = reflect.ValueOf("旺财")
f3.Call(params)
f2 := val.MethodByName("GetName")
f2.Call([]reflect.Value{})
}
type Animal struct {name string}
func (e *Animal) Eat() {fmt.Println("eat test")
}
func (e *Animal) SetName(name string) {e.name = name}
func (e *Animal) GetName() string {fmt.Println("name",e.name)
return e.name
}
正文完