Go HTTP Body 为什么只能读一次?

Go 的 HTTP Body 本质上是一次性消费的数据流,读完就会移动到末尾,因此日志中间件读过后再解 JSON 常见直接得到 EOF。本文从服务端恢复 r.Body、客户端借助 GetBody 重放请求,到生产环境中的大小限制、脱敏和幂等边界,梳理这类问题的正确处理方式。

Go HTTP Body 为什么只能读一次?

在 Go 语言中如何进行 AES-ECB-256 加解密

这篇文章用一个可直接运行的 Go 示例,说明如何借助 `github.com/forgoer/openssl` 快速完成 `AES-ECB-256` 的加解密,并补清实际使用时最容易出错的三件事:32 位密钥长度、`PKCS7_PADDING` 填充方式,以及跨语言对接时常见的 `base64` 编码处理。

在 Go 语言中如何进行 AES-ECB-256 加解密

Go 语言的 channel 到底需不需要关闭?这次讲清楚

Go 里的 channel 不是“创建了就要 close”的资源对象,是否关闭取决于接收方是否需要一个“不会再有数据”的明确信号。本文按常见并发场景拆开讲清:哪些情况必须关,哪些情况完全不用关,以及多生产者场景该怎样安全收尾。

Go 语言的 channel 到底需不需要关闭?这次讲清楚

Ubuntu 下 Golang 路径如何设置:把 GOROOT、GOPATH 和 PATH 一次配清楚

在 Ubuntu 上配置 Go 环境,关键不是安装本身,而是把 `GOROOT`、`GOPATH` 和 `PATH` 的关系理顺。本文按安装、变量设置、生效与验证几个环节拆开说明,并补上 Go Modules 代理配置,方便你快速判断当前环境是否已经可用。 在 Ubuntu 下配置 Go 环境时,真正容易出错的往往不是安装命令,而是路径变量怎么配、配完后为什么命令还是找不到。

Ubuntu 下 Golang 路径如何设置:把 GOROOT、GOPATH 和 PATH 一次配清楚

双引号 vs 反引号:Go 字符串处理到底该怎么选

Go 里双引号字符串和反引号字符串并不是写法偏好之争,而是两种处理规则。双引号支持转义,适合普通文本;反引号保留原样、支持多行,写 SQL、模板和正则时往往更清晰。理解它们的边界,代码会更好读也更少出错。

双引号 vs 反引号:Go 字符串处理到底该怎么选

如何写好 Go 项目中的 Makefile?

Go 项目里写 Makefile,核心不是把命令堆进去,而是把构建、测试、质量检查和工具依赖整理成团队可复用的入口。本文从基础模板、进阶写法到模块化拆分,梳理一份更适合实际项目落地的写法思路。

如何写好 Go 项目中的 Makefile?

AI 时代,Go 开发者怎么切入 AI 应用开发

AI 应用开发并不等于做大模型训练。对 Go 开发者来说,真正值得切入的是以 Prompt、RAG、Agent 为核心的应用工程:重点是 API 调用、系统编排、可靠性与成本控制。语言选择上,Go 足以承担主力后端,Python 更适合做原型和补生态。

AI 时代,Go 开发者怎么切入 AI 应用开发