Skip to content

07-generics ​

泛型(Generics)是 Go 1.18 引入的革命性特性。Go 的泛型设计追求简洁与实用,不引入庞大的类型系统,而是为日常开发中最常见的代码复用问题提供类型安全的解决方案。

学习目标 ​

  • 理解为什么需要泛型,以及泛型解决什么问题
  • 掌握类型参数、类型约束、类型集合的核心概念
  • 能够使用泛型实现通用的数据结构和算法
  • 熟练运用标准库的泛型包(slices、maps、cmp)
  • 理解泛型与接口的选择原则
  • 避免泛型使用中的常见陷阱

章节 ​

编号章节文件内容
2.1泛型入门01-泛型入门为什么需要泛型、类型参数、基础语法
2.2类型约束02-类型约束类型集、~、comparable、约束设计
2.3泛型数据结构03-泛型数据结构Stack、Queue、LinkedList、Set、LRU Cache
2.4泛型算法04-泛型算法Filter、Map、Reduce、GroupBy、Sort
2.5标准库泛型05-标准库泛型slices、maps、cmp 包深度解析
2.6实战与最佳实践06-实战与最佳实践决策树、缓存层、验证框架、性能

学习路径 ​

2.1 泛型入门          — 了解泛型解决的问题,会写泛型函数
    ↓
2.2 类型约束          — 深入掌握约束,理解 ~ 和 comparable
    ↓
2.3 泛型数据结构      — 动手实现常见数据结构
    ↓
2.4 泛型算法          — 掌握函数式编程模式
    ↓
2.5 标准库泛型        — 学会用标准库,不重复造轮子
    ↓
2.6 实战与最佳实践    — 知道什么时候用、什么时候不用

前置知识 ​

  • 掌握 Go 基础语法(变量、函数、类型)
  • 理解接口(interface)的概念和用法
  • 了解 Go 的数据结构(切片、Map)

学习时间 ​

约 1 周(每天 2-3 小时)

检查清单 ​

  • [ ] 能够编写泛型函数,理解类型推断规则
  • [ ] 掌握 ~T、comparable、cmp.Ordered 的使用场景
  • [ ] 至少实现 3 种泛型数据结构(Stack、Set、Cache)
  • [ ] 理解 Filter/Map/Reduce 模式和在 Go 中的写法
  • [ ] 熟练使用 slices.SortFunc 进行自定义排序
  • [ ] 掌握 cmp.Compare 用于多字段比较
  • [ ] 理解泛型和接口的选择原则(决策树)
  • [ ] 知道泛型的常见陷阱(类型推断失败、nil 处理)