Go · 02 核心能力
1. Goroutine + Channel
这是 Go 真正与 Java 不同的体感:
- 轻量并发:
go func(){...}() - Channel 做通信;「用通信分享内存」而不是处处锁
context做取消与超时——必须会用
| 适合 | 小心 |
|---|---|
| 网络 IO、worker 池、扇出请求 | goroutine 泄漏(没退出条件) |
| 代理、边车、简单 API | 无界开 goroutine 打爆内存 |
和 Java 线程池比:更轻,但 泄漏与数据竞争 一样会要命;go test -race 要会跑。
2. 性能与部署边界
- 静态编译、单文件部署,容器友好
- 内存与延迟在网络服务场景通常很漂亮
- 不是自动让业务变简单:域复杂、生态组件丰富度仍常输给 Java
适合:网关、高并发小工具、云原生旁路组件。
不适合(对我):取代 Java 做整套复杂中台。
3. 适合 / 不适合
| 适合 | 不适合(对我而言) |
|---|---|
| 边车、网关、高并发小工具 | 取代 Java 做整套 CRM/ERP |
| 对内存/部署体积敏感 | 快速 AI 试错(Python 更快) |
| 读开源、改小服务 | 团队不会 Go 却强行全量迁移 |
我为什么了解 Go
- 读开源、改小服务时用得上
- 并发与部署思路能反哺 Java 架构讨论
- 不与 Java 抢主业务,做 补位技能
下一篇:03 框架与生态