Go-反射

反射的示意图

image

案例1

image

复制package main

import (
	"fmt"
	"reflect"
)

func reflectTest01(b interface{}) {
	//通过反射获取传入变量的type kind value
	rTyp := reflect.TypeOf(b)
	fmt.Println("rTye=", rTyp)
	rVal := reflect.ValueOf(b)
	fmt.Printf("rTye=%v rVal=%T\n", rVal, rVal)
	n2 := 2 + rVal.Int()
	fmt.Println(n2)
	iv := rVal.Interface()
	num2 := iv.(int)
	fmt.Println(num2)
}

func main() {
	var num int = 100
	reflectTest01(num)
}

image

对结构体的反射

复制package main

import (
	"fmt"
	"reflect"
)

type Student struct {
	Name string
	Age  int
}

func reflectTest02(b interface{}) {
	//通过反射获取传入变量的type kind value
	rTyp := reflect.TypeOf(b)
	fmt.Println("rTye=", rTyp)
	rVal := reflect.ValueOf(b)
	iv := rVal.Interface()
	fmt.Printf("rTye=%v rVal=%T\n", iv, iv)

	fmt.Printf("kind=%v kind=%v\n", rTyp.Kind(), rVal.Kind())

	stu, ok := iv.(Student)
	if ok {
		fmt.Printf("stu.Name=%v\n", stu.Name)
	}

}

func main() {
	stu := Student{
		Name: "tmo",
		Age:  20,
	}
	reflectTest02(stu)
}

image

posted @   司砚章  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2021-06-11 PyQt5-使用可视化设计窗体的GUI程序
点击右上角即可分享
微信分享提示