别把 Go 写成 Java:毁掉项目从过度架构开始

本文永久链接 – https://tonybai.com/2026/06/05/stop-writing-go-like-java-avoid-over-architecting 大家好,我是Tony Bai。 前不久,Go 语言社区 Reddit (r/golang) 上爆发了两场激烈的争论。 这两个帖子的主题直击了无数 Go 开发者的灵魂深处: 我们该如何构建一个大型的 Go 模块化单体架构,而不被复杂的“架构设计”淹没? 为什么现在的 Go 项目里,pkg 和 internal 目录被滥用得如此令人发指? 如果你正在维护一个中大型的 Go 后端项目,你大概率经历过这样的绝望时刻:为了加一个极其简单的业务字段,你需要穿透 handler、usecase、domain、repository、adapter 等足足五层抽象结构;你的项目根目录下躺着一个 pkg 文件夹,里面又套着 internal,代码藏在七八级目录深处。 ...

June 5, 2026 · 8 min · Tony Bai

Go 的“显式哲学”为何在接口上“食言”了?—— 探秘隐式接口背后的设计智慧

本文永久链接 – https://tonybai.com/2026/01/14/go-explicit-philosophy-implicit-interfaces-design-wisdom 大家好,我是Tony Bai。 “Go 倾向于显式、冗长的代码,而不是‘魔法’。那么,为什么接口实现却是隐式的呢?这让理解代码变得困难多了,简直让我抓狂。” ...

January 14, 2026 · 8 min · Tony Bai

告别“If-Else”地狱:OpenFeature 如何重塑 Go 应用的特性开关管理?

本文永久链接 – https://tonybai.com/2025/12/23/goodbye-if-else-hell-openfeature-feature-flag-management-go 大家好,我是Tony Bai。 在软件开发的早期,我们都有过这样的经历:为了上线一个不确定的新功能,我们在代码里写下了: if os.Getenv("ENABLE_NEW_FEATURE") == "true" { // 新逻辑 } else { // 旧逻辑 } 简单、直接,但也埋下了隐患。随着系统变得复杂,这种零散的、基于环境变量或配置文件的开关,迅速演变成了难以维护的“If-Else 地狱”。 ...

December 23, 2025 · 11 min · Tony Bai