【golang 经典案例总结】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
}
推荐阅读
- 【golang】leetcode中级-字母异位词分组&无重复字符的最长子串
- 彻底理解Golang Map
- kratos线上开源年会它来啦~
- 深入浅出 Golang 资源嵌入方案(go-bindata篇)
- 深入浅出 Golang 资源嵌入方案(前篇)
- Go实战 | 基于有向无环图的并发执行流的实现
- Golang 数组和切片
- Go JSON编码与解码()
- golang map基础知识