package main
import (
"fmt"
"reflect"
)
func main() {
n := 1.2345
fmt.Println("old value :", n)
//通过reflect.ValueOf获取n中的reflect.Value,注意:参数必须是指针才能修改其值
v := reflect.ValueOf(&n)
e := v.Elem()
fmt.Println("type :", e.Type())
fmt.Println("can set :", e.CanSet())
//重新赋值
e.SetFloat(2.123)
fmt.Println("new value :", n)
//nv := reflect.ValueOf(n)
// 如果非指针,这里直接panic
//nv.Elem()
}
运行结果:
old value : 1.2345
type : float64
can set : true
new value : 2.123