Go GUI 开发的“绝境”与“破局”:2025 年现状与展望

本文永久链接 – https://tonybai.com/2025/11/03/go-gui-development-2025 大家好,我是Tony Bai。 “Go 语言能写桌面应用吗?” 这个问题,如同一个幽灵,常年盘旋在 Go 社区的上空。作为一门在后端、云原生和命令行工具领域所向披靡的语言,Go 在图形用户界面(GUI)开发上的“短板”,一直是其支持者心中一个难以言说的痛。 ...

November 3, 2025 · 10 min · Tony Bai

成为更完整的 Go 工程师,从补上这堂系统编程课开始

本文永久链接 – https://tonybai.com/2025/09/01/system-programming-in-go 大家好,我是Tony Bai。 作为一名 Go 工程师,我们无疑是幸运的。这门语言为我们提供了简洁的语法、强大的并发模型和一套设计精良的标准库。我们能以极高的效率,构建出高性能的 Web 服务、数据管道和云原生应用。 ...

September 1, 2025 · 6 min · Tony Bai

Go pprof 迎来重大革新:v2 提案详解,告别默认注册,拥抱飞行记录器

本文永久链接 – https://tonybai.com/2025/07/11/net-http-pprof-v2 大家好,我是Tony Bai。 Go 语言的性能诊断利器 net/http/pprof 即将迎来一次意义深远的变革。一项编号为 #74544 的新提案建议引入一个全新的 net/http/pprof/v2 包,旨在从根本上解决当前版本因“默认注册”行为带来的安全隐患。该提案不仅重塑了 pprof 端点的注册方式,还计划引入对 Go 1.25 飞行记录器(Flight Recorder)的支持、动态 CPU 采样率控制等一系列新功能。本文将深入解读该提案的核心内容、API 变化及其对 Go 开发者生态的潜在影响。 ...

July 11, 2025 · 5 min · Tony Bai

当Gopher拥有了“Go语言女友”:一张图带你读懂Go的那些“可爱”特性

当Gopher拥有了“Go语言女友”:一张图带你读懂Go的那些“可爱”特性 - Tony Bai =============== Tony Bai 一个程序员的心路历程 Google Go语言编码风格规范 ...

May 30, 2025 · 7 min · Tony Bai

API设计的“Go境界”:Go团队设计MCP SDK过程中的取舍与思考

本文永久链接 – https://tonybai.com/2025/05/23/go-api-design-mcp-sdk 大家好,我是 Tony Bai。 作为开发者,我们每天都在与 API 打交道——调用它们,设计它们,有时也会为糟糕的 API 设计而头痛不已。一个优秀的 API,如同一位技艺精湛的向导,能清晰、高效地引领我们通往复杂功能的彼岸;而一个蹩脚的 API,则可能像一座布满陷阱的迷宫,让我们步履维艰。 ...

May 23, 2025 · 14 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

单测时尽量用fake object

本文永久链接 – https://tonybai.com/2023/04/20/provide-fake-object-for-external-collaborators 1. 单元测试的难点:外部协作者(external collaborators)的存在 单元测试是软件开发的一个重要部分,它有助于在开发周期的早期发现错误,帮助开发人员增加对生产代码正常工作的信心,同时也有助于改善代码设计。Go语言从诞生那天起就内置Testing框架(以及测试覆盖率计算工具),基于该框架,Gopher们可以非常方便地为自己设计实现的package编写测试代码。 ...

April 20, 2023 · 13 min · Tony Bai

Go标准库依赖的那些modules

本文永久链接 – https://tonybai.com/2022/10/25/the-modules-that-go-standard-library-depend-on 对于程序员来说,编写的代码依赖标准库是“天经地义”的事情。标准库在程序员眼中就是高质量的代名词,也是最值得信赖的非自己所写的代码,当然更是代码包依赖关系链条上的最后一环,即所有直接或间接依赖的第三方module最终都会依赖标准库。 ...

October 25, 2022 · 5 min · Tony Bai

我来告诉你Go项目标准结构如何布局

本文永久链接 – https://tonybai.com/2022/04/28/the-standard-layout-of-go-project 每当我们编写一个非hello world的实用Go程序或库时,我们都会在项目结构、代码风格以及标识符命名这三个“门槛”前面踯躅徘徊许久,甚至始终得不到满意答案。 ...

April 28, 2022 · 11 min · Tony Bai