Go 与典型编译型 / 解释型语言的差异
关键问题与答案
- 什么是 Go 语言的反射?其基础组成有哪些?
答案:反射是 Go 语言在编译时未知类型的情况下,操作变量、查看值、调用方法及操作布局的机制。基础组成包括:
- reflect包提供运行时反射能力;
- reflect.TypeOf获取运行时类型信息;
- reflect.ValueOf获取数据的运行时表示;
- reflect.Type(类型信息接口)和 reflect.Value(值的结构体)为核心类型。
- Go 反射的三大法则具体指什么?
答案:
- 第一法则:从interface{}变量反射出反射对象(通过reflect.TypeOf和reflect.ValueOf实现);
- 第二法则:从反射对象获取interface{}变量(通过reflect.Value.Interface方法);
- 第三法则:更新reflect.Value时,其持有的值必须可更新(需确保反射对象指向可寻址的原始变量)。
- Go 反射中interface{}类型的底层表示是什么?如何通过反射获取类型