Go 设计模式学习笔记(23 种 GoF 模式 × Go 惯用实现)

Go 设计模式学习笔记(23 种 GoF 模式 × Go 惯用实现) 本笔记基于 Refactoring Guru(中文站) 的经典 23 种 GoF 设计模式目录,用 Go 视角重新梳理。每个模式按「模式介绍 → 设计逻辑 → 应用场景 → 生产示例 → Go 简化 / 变体」展开,重点不是照搬经典类图,而是理解这些模式在 Go 中如何被简化、变体或替代,并学习 Go 社区基于语言特性(接口、组合、channel、函数一等公民)的惯用写法。所有代码均为可编译、可运行的独立示例,只用 Go 标准库,中文注释。 一、为什么 Go 需要重新审视设计模式 经典 GoF 模式诞生于 Java / C++ 时代,依赖继承、抽象类、protected、方法重载这些 OOP 机制。Go 刻意去掉了这些,换来的是更简单的语言: 经典 OOP 依赖 Go 的替代 继承(extends) 结构体嵌入 + 接口组合 抽象类 / 虚方法 接口(隐式实现)+ 函数字段 方法重载 函数式选项 / 变长参数 / 泛型 异常(exception) 返回值 error + 错误包装 观察者、事件 channel + goroutine 迭代器(Iterator) 原生 range + Go 1.23 range over func 因此同样一个模式,在 Go 里可能是原生支持(几乎不用写)、简化(一两行函数搞定)、变体(换一种更 Go 的形态),甚至反模式 / 低价值(社区明确不推荐)。本笔记的核心任务,就是给每个模式贴上这个「Go 形态」标签。 ...

August 4, 2026