Go语言技术文章
-
说明goquery空选择集调用Attr和Eq的返回行为,区分无节点、缺失属性与空属性值,并用完整Go示例建立必填字段错误边界。377 收藏 -
Go Expr 规则访问可选指针字段时,先用 nil 条件保护成员访问,再复用编译后的 program;同时区分 Compile、Run、未定义变量和关闭短路的边界。243 收藏 -
通过 NewOption 配对中文标签与稳定编码,用 Select 泛型和 Value 指针绑定接收业务值,结合最小示例说明默认值、错误处理和任务消费边界。127 收藏 -
Go sqlmock 适合锁定 SQL 调用、参数和事务契约,真实数据库测试则负责发现方言、模式、约束、索引与事务环境问题。本文用一张边界表说明两者各自能发现什么,以及如何组合回归。135 收藏 -
Go sqlmock 默认按预期注册顺序匹配,多个 goroutine 并发查询时,实际到达顺序可能不同,测试就会误报。本文说明如何用 MatchExpectationsInOrder(false) 解除不必要的顺序约束,同时保留 SQL 和参数匹配,并区分事务等必须有序的场景。313 收藏 -
Go sqlmock 默认把预期 SQL 当正则表达式处理,问号和括号会改变匹配语义。本文说明如何用 regexp.QuoteMeta 或 QueryMatcherEqual 修复测试。295 收藏 -
用 Go sqlmock 模拟事务第二次写入失败,按 Begin、Exec、Rollback 的顺序验证错误返回和回滚动作,避免测试误把提交当成成功。475 收藏 -
在 Go sqlmock 查询期望上配置 RowsWillBeClosed,并在函数返回后检查 ExpectationsWereMet。本文用提前返回的最小测试说明结果集关闭、自动关闭边界及资源责任的排查方法。133 收藏 -
Golang · Go问答 | 1天前 | 结构体 · 单元测试 · go · 结构体比较 Go go-cmp cmp.Equal Equal方法 cmp.Transformer cmp.Comparer
go-cmp 的 cmp.Equal 在没有被选项覆盖时,会优先调用符合签名的 Equal 方法,因此不会继续逐字段比较。本文拆解这个决策顺序,并给出用 Transformer 去掉 Equal 方法、或用 Comparer 明确覆盖的测试写法。296 收藏 -
Go go-cmp 比较 nil 切片与非 nil 空切片时默认保留状态差异。本文用最小项目说明 EquateEmpty 的使用方式、Equal 与 Diff 的统一配置,以及不应全局忽略空值差异的业务边界。367 收藏 -
go-cmp 比较含未导出字段的结构体时 panic 不是库失效,而是默认拒绝猜测内部字段语义。本文按字段用途选择 IgnoreUnexported、自定义 Comparer 或 AllowUnexported。438 收藏 -
用 cmpopts.EquateApprox 为 go-cmp 配置相对容差、绝对容差和接近零时的兜底边界,并说明 Equal、Diff、float32、NaN 与无穷大的排查方法。442 收藏 -
Go 的 cmp.Equal 默认按切片下标比较,元素相同但顺序不同仍会判不等。本文用 cmpopts.SortSlices 为基本类型和结构体切片提供确定性排序规则,并说明重复元素、nil 与空切片的边界。162 收藏 -
Go csvutil 按表头名称和 csv 标签匹配独立字段,而非依赖结构体位置。通过双样本小项目解释列重排,并说明无表头、表头失配和自定义字段依赖的边界。200 收藏 -
Go csvutil 解码 CSV 空字段时,普通值会得到类型零值,指针字段会得到 nil;本文用对照示例说明 omitempty、结构体复用和缺失状态的处理边界。475 收藏