代码实例:
1、编写一个Cal 结构体,有 两个字段 Num1,和Num2。
2、方法 GetSub(name string)
3、使用反射遍历Cal结构体所有的字段信息4、使用反射机制完成对GetSub 的调用,输出形式为
"tom 完成了减法运行,8 -3 = 5"
package main
import (
"fmt"
"reflect"
)
type Cal struct {
Num1, Num2 int
}
func (c *Cal) GetSub(name string) {
fmt.Printf("%v完成了减法运行,%v - %v = %v\n", name, c.Num1, c.Num2, c.Num1-c.Num2)
}
func reflectCal(b interface{}) {
bv := reflect.ValueOf(b)
bvNumField := bv.Elem().NumField()
bv.Elem().Field(0).SetInt(8)
bv.Elem().Field(1).SetInt(5)
for i := 0; i < bvNumField; i++ {
fmt.Printf("第%v个参数是%v\n", i, bv.Elem().Field(i))
}
var params []reflect.Value
params = append(params, reflect.ValueOf("tom"))
bv.Method(0).Call(params)
}
func main() {
var cal Cal
reflectCal(&cal)
}