1.反射之用字符串函数名调用函数

package mainimport (    "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}