Go 黄金文件测试入门:适合输出很长的文本和 JSON
有些函数的输出很长,比如生成 Markdown、渲染配置文件、格式化 JSON、生成 SQL。你当然可以在测试里写一个很长的字符串常量,但测试文件会变得难读。黄金文件测试,也叫 golden file test,就是把期望输出放在单独文件里,测试时读取文件并比较。
tag
有些函数的输出很长,比如生成 Markdown、渲染配置文件、格式化 JSON、生成 SQL。你当然可以在测试里写一个很长的字符串常量,但测试文件会变得难读。黄金文件测试,也叫 golden file test,就是把期望输出放在单独文件里,测试时读取文件并比较。
Go 与区块链:从概念到实现 区块链,这个听起来很神秘的技术,其实核心思想非常简单: 去中心化的、不可篡改的数据账本 。你可能听说过比特币、以太坊,但你知道区块链的底层原理吗? 今天,我们将用 Go 语言从零开始构建一个简单的区块链系统,深入理解区块链的核心概念:区块、哈希、工作量证明、交易、钱包和 P2P 网络。
Go 普通结构体很难直接区分字段未提交、提交 null 和提交空值。本文用自定义 Optional 类型和 UnmarshalJSON 实现三态区分,讲解 PATCH 接口的安全更新策略。
面向 Go 初学者介绍 Go 1.23 range over func 的基本写法、适用场景、与切片返回的取舍,以及如何避免过度设计。
Go GC 调优实战:从理论到实践 你有没有遇到过这样的场景:你的 Go 服务跑着跑着,CPU 突然飙高,响应延迟抖动明显,过了几十毫秒又恢复正常?恭喜你,你遇到了 GC pause。垃圾回收(Garbage Collection,简称 GC)是 Go 语言的核心特性之一。
用批量处理任务讲 Go channel 流水线的基础写法,包括生产者、工作者、结果汇总、context 取消和 channel 关闭规则,以及多级流水线、背压控制和超时处理。
全面介绍 Go 语言中的消息队列实战,包括 Kafka 生产者与消费者、Kafka Streams、RabbitMQ 集成、AMQP 协议、消息模式、错误处理和死信队列
讲 Go 程序如何通过 ldflags 注入版本号、Git commit 和构建时间,并在 CLI 或 HTTP 健康检查中展示。
深入探索 Go 1.24 的重要特性:weak 指针改进、PGO 优化、net/http 增强、crypto 改进、性能提升、工具链更新与最佳实践
邮件模板听起来像前端工作,但后端经常要负责生成验证码、邀请链接、账单通知和任务提醒。很多初学项目一开始直接用 拼 HTML,写到第二封邮件时就会变得难维护。Go 的 很适合渲染 HTML 邮件,因为它会自动转义用户数据。
找回密码看起来是一个普通功能:用户输入邮箱,系统发送链接,用户点开后设置新密码。真正实现时,最关键的是 token。它必须足够随机,不能长期有效,最好一次性使用,数据库里也不应该明文保存。本文用 Go 写一个入门版密码重置 token 流程。
从一次查询接口出发,讲 database/sql 里 context 的使用、QueryContext、Scan、Rows 关闭、超时传播和常见连接泄漏问题。
深入探讨 Go 微服务中的服务发现与注册机制,包括 Consul、etcd、Nacos 集成,健康检查、负载均衡、熔断器和服务网格基础
CSV 导入是很多后台系统都会遇到的功能。用户从表格软件导出一份文件,上传到系统里批量创建用户、商品或订单。Go 标准库的 能完成大部分基础工作,但真正难的是边界:表头不对怎么办,某一行邮箱为空怎么办,转换失败怎么告诉用户,文件很大时能不能逐行处理。
深入讲解如何使用 Go 和 gqlgen 构建 GraphQL API,包括 schema 定义、resolver 实现、mutation、subscription、认证、分页和性能优化
临时文件经常出现在后端任务里:下载一个文件后解析,生成报表后上传,图片转换时落盘,或者调用某个只接受文件路径的外部工具。很多初学者会手写固定路径,这在并发和安全上都不稳。Go 标准库提供了 os.CreateTemp 和 os.MkdirTemp,应该优先使用它们。
写后端服务时,外部调用失败是常态。网络会抖,依赖会慢,网关会返回 502,数据库也可能短暂不可用。初学者最容易写出两种极端代码:一种完全不重试,偶发错误直接暴露给用户;另一种无脑重试很多次,把一个小抖动放大成更大的压力。正确做法不是“永远重试”或“永不重试”,而是把超时、退避和幂等性一起考虑。
Go 标准库写 JSON API 并不难,难的是写到第十个接口时还能保持清楚。很多初学项目一开始把所有逻辑塞进 handler:解析 JSON、校验字段、查数据库、拼响应、写错误。前两个接口还行,接口多了以后,错误格式不统一,测试也不好写。
深入回顾 Go 1.23 的重要特性:range over function 迭代器模式、unique 包、time 改进、slices/maps 新增方法、性能优化与实际应用案例
全面介绍使用 cobra 框架构建现代命令行工具,包括命令结构、标志参数、子命令、viper 配置集成、Shell 自动补全、彩色输出和交互式提示