八. go 反射机制

八. go 反射机制,第1张

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/996052.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存