1. 通过反射获取一个变量的值和类型
package main
import (
"fmt"
"reflect"
)
func main(){
var a float32 = 4.0
t := reflect.TypeOf(a)
fmt.Println("type : ", t)
v := reflect.ValueOf(a)
fmt.Println("value : ", v)
if t.Name() == "float32" {
fmt.Println("hahahahahaha")
}
}
结果:
type : float32
value : 4
hahahahahaha
2. 反射对象与interface对象互相转化
package main
import (
"fmt"
"reflect"
)
func main(){
var a float32 = 4.0
v := reflect.ValueOf(a)
var b float32 = v.Interface().(float32)
fmt.Println("b : ", b)
}
结果:
b : 4
3. 反射修改变量的值
package main
import (
"fmt"
"reflect"
)
func main(){
var a float32 = 8.0
v := reflect.ValueOf(&a)//必须用指针
v.Elem().SetFloat(9.0)
fmt.Println("x : ", v.Elem().Interface())
}
结果:
x : 9
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)