跳到主要内容

反射与泛型

一、反射(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 选择建议​