Debian 下 Go 语言如何进行消息队列编程

这篇文章用 RabbitMQ 示例梳理 Debian 下 Go 消息队列开发的最短上手路径:先做队列选型,再安装服务端与 Go 客户端库,最后通过生产者、消费者代码完成一次消息收发,并说明跑通后的验证方式与后续加固方向。

Debian 下 Go 语言如何进行消息队列编程

厌倦了 Makefile?Go 项目可以试试更直观的 Taskfile

Taskfile 是用 Go 编写的任务运行器,主打用 YAML 管理构建、测试和发布流程。对常写 Go 项目的人来说,它在可读性、跨平台和变量管理上都比 Makefile 更省心,但生态成熟度仍不如后者,是否替换更适合结合项目阶段和团队习惯来判断。

厌倦了 Makefile?Go 项目可以试试更直观的 Taskfile

Go无锁编程:解锁高并发服务的性能密码

在 Go 的高并发服务里,`sync.Mutex` 很常见,但并不是所有同步问题都该交给锁处理。本文围绕原子操作、`channel`、`sync.Map`、`sync.Pool` 四种方案,拆开讲清它们各自适合解决什么问题、边界在哪里,以及什么时候反而继续用锁更稳妥。

Go无锁编程:解锁高并发服务的性能密码

Go 构建时注入版本号实战:不用第三方包,也能把版本信息做完整

给 Go 程序加上可查询的版本号,不一定要引入第三方库。本文用标准库配合 `go build -ldflags`,演示如何在构建阶段注入版本号、构建时间和 Git 提交,并进一步补上 JSON 输出与 Makefile 自动化构建。 线上排查 Go 程序时,最常见的问题不是服务起不来,而是程序已经在跑,却说不清自己来自哪次构建。

Go 构建时注入版本号实战:不用第三方包,也能把版本信息做完整

Go 语言中的切片:从声明、初始化到追加与遍历

切片是 Go 中最常用的数据结构之一,看起来像数组,却更适合处理长度可变的数据。本文围绕声明、初始化、赋值、追加、再切片和遍历几个高频操作展开,结合代码说明切片怎么创建、何时扩容,以及日常开发里该怎样理解它和数组的区别。

Go 语言中的切片:从声明、初始化到追加与遍历

Go 代码的进化美学:`wg.Go()` 方法让你少写一个 BUG

Go 1.25 为 `sync.WaitGroup` 增加了 `Go()` 方法,把常见的 `Add(1)`、`defer Done()` 模板收进标准库。这个改动不大,却直接减少遗漏同步调用的常见错误,也让并发代码的意图更容易被读懂。 在 Go 的并发开发里,`sync.WaitGroup` 很常用,但那段 `Add(1)`、`defer Done()` 的固定模板也几乎人人都写烦过。

Go 代码的进化美学:`wg.Go()` 方法让你少写一个 BUG

我用 Go 做游戏开发时,状态机是怎么实现的?

这篇文章围绕 Go 游戏开发里的状态切换问题,梳理了状态机的基本概念、适用场景,以及用 `github.com/looplab/fsm` 落地的方式。重点不在概念堆砌,而在于说明什么时候该上状态机、Go 里通常怎么设计,以及回调机制能帮你把流程控制拆得更清楚。

我用 Go 做游戏开发时,状态机是怎么实现的?