Golang反射原理
package main
import (
"fmt"
"reflect"
)
func main() {
// 示例变量
var x float64 = 3.4
// 获取类型和种类
t := reflect.TypeOf(x)
fmt.Println("type:", t)
// 获取值
v := reflect.ValueOf(x)
fmt.Println("value:", v)
// 获取种类
fmt.Println("kind is float64:", v.Kind() == reflect.Float64)
// 修改值
p := reflect.ValueOf(&x)
vp := p.Elem()
if vp.CanSet() {
vp.SetFloat(7.1)
}
fmt.Println("new value:", x)
}