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
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。