Go Command 工作组成立:这几个用了十年的命令可能要被废!

本文永久链接 – https://tonybai.com/2026/04/11/go-command-working-group-formed-legacy-commands-deprecated 大家好,我是Tony Bai。 在这个技术浪潮汹涌的时代,Go 语言以其惊人的稳定性和向后兼容性著称。但稳定,并不代表停滞。 就在最近,Go 核心团队内部悄然发生了一件大事:他们正式成立了一个全新的 “Go Command 工作组(Go Command Working Group)”。 ...

April 11, 2026 · 7 min · Tony Bai

别再盯着 go.sum 看了:它不是你想象中的那个 Lockfile

别再盯着 go.sum 看了:它不是你想象中的那个 Lockfile - Tony Bai Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 Google Go语言编码风格规范:指南篇 Google Go语言编码风格规范:决定篇 Google Go语言编码风格规范:最佳实践篇 Go语言第一课FAQ ...

January 6, 2026 · 4 min · Tony Bai

Go Proxy的“背景刷新”机制,是优化还是“DDoS”?一次社区事件引发的深度复盘

本文永久链接 – https://tonybai.com/2025/09/05/go-proxy-revise-background-refresh-pacing 大家好,我是Tony Bai。 2025年8月14日,Go开发者Ted Unangst发表了一篇措辞犀利的博文——《What is the go proxy even doing?》。他用服务器日志作为证据,公开质疑Go官方模块代理(proxy.golang.org)对其个人代码托管服务humungus.tedunangst.com产生了“洪水般”的、看似毫无意义的巨大流量。这个事件迅速在社区发酵,将一个通常在后台默默工作的核心基础设施,推上了风口浪尖。当然在我的印象中,这已经不是Go社区第一次“抱怨” 官方Go proxy的“诡异”行为给一些小型站点带来的烦恼了。 ...

September 5, 2025 · 7 min · Tony Bai

Go工具链进化:go.mod新增ignore指令,破解混合项目构建难题

Go工具链进化:go.mod新增ignore指令,破解混合项目构建难题 - Tony Bai =============== Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 ...

May 22, 2025 · 8 min · Tony Bai

Go包构建:专家也未必了解的文件选择细节

本文永久链接 – https://tonybai.com/2024/11/21/go-source-file-selection-details-when-building-package 在Go语言开发中,包(package)是代码组织的基本单位,也是基本的构建单元。Go编译器会将每个包构建成一个目标文件(.a),然后通过链接器将这些目标文件链接在一起,形成最终的可执行程序。 尽管Go包的构建过程看似简单,但实际上蕴含着许多值得深入了解的细节。例如,当我们执行go build命令时,Go编译器是如何选择需要编译的源文件的?你可能会回答:“不就是通过文件名中的ARCH和OS标识以及构建约束(build constraints)来选择的吗?” 虽然你的答案并没有错,但如果我进一步提出以下问题,你是否还能给出确切的答案呢? ...

November 21, 2024 · 11 min · Tony Bai

Go编译的几个细节,连专家也要停下来想想

本文永久链接 – https://tonybai.com/2024/11/11/some-details-about-go-compilation 在Go开发中,编译相关的问题看似简单,但实则蕴含许多细节。有时,即使是Go专家也需要停下来,花时间思考答案或亲自验证。本文将通过几个具体问题,和大家一起探讨Go编译过程中的一些你可能之前未曾关注的细节。 ...

November 11, 2024 · 17 min · Tony Bai

小厂内部私有Go module拉取方案3

本文永久链接 – https://tonybai.com/2023/03/03/the-approach-to-go-get-private-go-module-in-house-part3 1. 缘起 我们的Go团队这两年完全是按照之前写的《小厂内部私有Go module拉取方案》和《小厂内部私有Go module拉取方案(续)》中的方案搭建的内部拉取私有仓库的基础设施,总体感觉不错,目前也没有什么大问题。 ...

March 3, 2023 · 11 min · Tony Bai

如何作废一个已发布的Go module版本,我来告诉你!

Go语言自诞生以来,一路走到今天已经经历了11个年头了。其包依赖管理机制也从无到有,从vendor演化成了如今的Go module。Go module从Go 1.11进入gopher们视野,到目前的Go 1.15,其改进和优化一直在持续。在即将到来的Go 1.16中,Go module将成为默认包依赖管理模式(即默认GO111MODULE=on)。但即便如此,我们在进行go module的实践过程中依然还会遇到一些“棘手”的问题,本文就将针对一个Go module实践中的具体问题做深入描述,并告诉你目前可用的最佳解决方案(也许在go module的后续演进过程中可能会有更好的解决方案或干脆消除掉这个机制上的问题)。 ...

December 26, 2020 · 10 min · Tony Bai

Go语言包管理简史

包管理是Go一直被诟病做得不好的功能之一。先前版本(go 1.11之前)的主要缺点之一是go get是缺乏对依赖包版本的管理和对可复制构建(reproducible build)的支持。Go社区已经开发了一些包管理器和工具作为版本化包依赖的事实标准解决方案,如glide,dep以及一些辅助工具等。 ...

September 21, 2019 · 7 min · Tony Bai