跳到主要内容

反射与泛型

一、反射(Reflection)

1.1 反射基础

  • 反射概念
  • reflect 包
  • 反射应用场景

1.2 反射类型

  • reflect.Type
  • reflect.Value
  • TypeOf 和 ValueOf

1.3 反射基本操作

  • 获取类型信息
  • 获取值信息
  • 修改值
  • 调用方法

1.4 反射与结构体

  • 遍历字段
  • 获取字段值
  • 设置字段值
  • 字段标签读取

1.5 反射与方法

  • 获取方法
  • 方法调用
  • 动态调用

二、反射应用

2.1 深度拷贝

2.2 序列化/反序列化

2.3 动态代理

2.4 ORM 映射

2.5 配置解析

三、反射注意事项

3.1 性能开销

3.2 类型安全

3.3 可读性问题

3.4 使用原则

四、泛型(Generics)

4.1 泛型基础

  • 泛型概念
  • 泛型引入(Go 1.18)
  • 类型参数

4.2 泛型函数

  • 泛型函数定义
  • 类型参数约束
  • 类型推断
  • comparable 约束

4.3 泛型类型

  • 泛型结构体
  • 泛型接口
  • 类型嵌套

4.4 类型约束

  • 接口约束
  • ~ 类型
  • 联合约束
  • any 约束

4.5 泛型方法

  • 方法类型参数
  • 接收者约束

五、泛型应用

5.1 通用数据结构

  • 泛型切片
  • 泛型映射
  • 泛型队列

5.2 通用算法

  • 排序
  • 查找
  • 过滤

5.3 工具函数

  • 函数式编程
  • 数据转换

六、泛型最佳实践

6.1 何时使用泛型

6.2 泛型 vs 接口

6.3 性能考虑

6.4 代码可读性

6.5 设计模式

七、反射与泛型对比

7.1 类型安全

7.2 性能对比

7.3 使用场景

7.4 选择建议