Show HN:AssertGo – Go 语言的流畅断言库
作者喜欢 AssertJ 风格的流畅断言,但发现 Go 语言缺乏类似库,于是自行开发了 AssertGo。该项目最初基于 Go 1.26 编写,在 Go 1.27 RC 发布后将顶层方法改为泛型实现。库提供了简洁的链式调用 API,支持对基本类型、切片、映射等进行断言。代码设计由作者独立完成,AI(Claude Sonnet)仅用于代码生成。
背景速读
- 作者发布了一个 Go 语言的断言库 AssertGo,采用流畅接口(fluent API)风格,灵感来自 Java 生态中流行的 AssertJ。
- Go 1.27 新引入的泛型方法(generic methods)是此项目的关键:此前 Go 只允许泛型类型和泛型函数,不支持对某个方法单独声明类型参数。1.27 的这一变化让断言库的顶层方法可以从 `any` 改为真正的泛型,使用体验更接近 AssertJ,类型安全性也更好。
- 对于非 Go 开发者:断言(assertion)是单元测试中判断预期结果是否匹配的语句。流畅断言(fluent assertion)通过连续调用(如 `.EqualTo("hello")`) 使测试代码更可读。
- 该项目正处于 Go 1.27 RC(发布候选版)刚刚发布的时间节点,因此也是社区对新语言特性实际应用的早期展示。