知识卡片

反射运行时自省

专业/工作 · 489.b.2.b.1

内容

反射让程序在运行时查看和调用对象的类型、属性、方法,适合通用框架、序列化和 RPC。边界也明显:越依赖运行时探测,越牺牲静态类型能提前发现问题的能力。它的运作可以拆成三步转换(参见 [[反射三次转换]]),[[gRPC像本地调用]] 正是依赖反射自动完成参数的序列化与调用绑定。

参考来源

- 位置:《Go语言高级开发与实战》第2章《Go语言高级编程技巧》(源文件:_epub-src/GoYu Yan Gao Ji Kai Fa Yu Shi Zhan_split_016.html) - 结论依据:原文说明 Go 反射机制可在运行时动态调用对象方法和属性,因此支撑运行时自省的结论。 - 原始内容:模型都不同,并且有些语言根本不支持反射。Go语言实现了反射,反射机制就是在运行时动态地调用对象的方法和属性。官方自带的reflect包就是反射相关的,只要包含这个包就可以使用。Go语言的gRPC(gRPC会在3.7节进行详细介绍)也是通过反射实现的。 1 接口和反射 在讲反射之前,先来看看Go语言关于类型设计的一些原则。 变量包括类型、值两部分,理解这一点就知道为什么n il !=n il 了。类型包括静态类型(Static Type)