3. 反射案例¶
3.1. 反射创建实例¶
样例如下
package main
import (
"fmt"
"reflect"
)
func main() {
var a int
// 取变量a的反射类型对象
typeOfA := reflect.TypeOf(a)
// 根据反射类型对象创建类型实例
aIns := reflect.New(typeOfA)
// 输出Value的类型和种类
fmt.Println(aIns.Type(), aIns.Kind())
}
3.2. 反射调用函数¶
package main
import (
"fmt"
"reflect"
)
func add(a, b int) int {
return a + b
}
func main() {
fv := reflect.ValueOf(add)
paramList := []reflect.Value{
reflect.ValueOf(10),
reflect.ValueOf(20),
}
retList := fv.Call(paramList)
fmt.Println(retList[0].Int())
}