开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程:反射的引出和应用场景】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/626/detail/9765
反射的引出和应用场景
内容介绍
一、提出需求:这个有什么用,他能干什么?
二、先看一个问题,反射的应用场景
三、使用反射机制,编写函数的适配器,桥连接
一、提出需求:这个有什么用,他能干什么?
前面我们学习过结构体的序列化和反序列化,结构体里可以加一个 tag,为了解决序列化的时候我们可以指定一个 k 的值,用结构体的标签我们在进行序列化的时候他的字段的名称可以根据我指定的名称来进行序列化。
二、先看一个问题,反射的应用场景
我们可以说,这里有一个匿名函数
Test1=func(v1 int,v2 int){
t.log(v1,v2,)
}
Test2:=func(v1 int,v2 int,s string){
t.log(v1,v2,s)
}
//将函数赋予变量,相当于函数变量
假设你有一个需求,你想编一个适配器函数用作统一处理接口,比如说你想给我传进来一个函数名称call interface{},args…interface{})
{为变量
//内容
}
//实现调用 test1 对应的函数
Bridge(test1,1,2)
//实现调用test2对应的函数
Bridge(test2,1,2,“test2”)
反射的最大价值就是自己写框架
三、使用反射机制,编写函数的适配器,桥连接
举个例子,比如说我们想用这个函数来调函数,假如你有结构体,将变量赋于这个结构体,给你一个结构体的实例,要求用反射去拿到这个结构体所有的字段信息,所有的方法信息,然后用反射将他调起来,甚至可以用反射创建一个结构体。