Go问答技术文章
-
说明goquery空选择集调用Attr和Eq的返回行为,区分无节点、缺失属性与空属性值,并用完整Go示例建立必填字段错误边界。377 收藏 -
Go Expr 规则访问可选指针字段时,先用 nil 条件保护成员访问,再复用编译后的 program;同时区分 Compile、Run、未定义变量和关闭短路的边界。243 收藏 -
Go sqlmock 适合锁定 SQL 调用、参数和事务契约,真实数据库测试则负责发现方言、模式、约束、索引与事务环境问题。本文用一张边界表说明两者各自能发现什么,以及如何组合回归。135 收藏 -
Go sqlmock 默认按预期注册顺序匹配,多个 goroutine 并发查询时,实际到达顺序可能不同,测试就会误报。本文说明如何用 MatchExpectationsInOrder(false) 解除不必要的顺序约束,同时保留 SQL 和参数匹配,并区分事务等必须有序的场景。313 收藏 -
Go sqlmock 默认把预期 SQL 当正则表达式处理,问号和括号会改变匹配语义。本文说明如何用 regexp.QuoteMeta 或 QueryMatcherEqual 修复测试。295 收藏 -
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 收藏 -
Go csvutil 按表头名称和 csv 标签匹配独立字段,而非依赖结构体位置。通过双样本小项目解释列重排,并说明无表头、表头失配和自定义字段依赖的边界。200 收藏 -
Go csvutil 解码 CSV 空字段时,普通值会得到类型零值,指针字段会得到 nil;本文用对照示例说明 omitempty、结构体复用和缺失状态的处理边界。475 收藏 -
csvutil 遇到 CSV 表头缺少结构体字段时,默认会保留字段零值;若业务要求表头完整,可打开 DisallowMissingColumns,让 Decode 返回 MissingColumnsError。本文还区分行字段缺失与表头缺失,并给出宽松导入、严格导入和多余列处理方案。220 收藏 -
Excelize 的 StreamWriter 写完行并不等于工作表流已经结束。本文把 SetRow、Flush 和 SaveAs 放在同一条边界线上解释,说明为什么 Flush 必须位于每个工作表的流式写入末尾,以及 AddTable、递增行号、普通模式混用和大数据量临时文件等容易混淆的地方。467 收藏 -
Excel 日期本质上是序列数字,显示成日期依赖单元格格式。本文对比 Excelize 的原始读取、格式化读取、1904 日期系统、ExcelDateToTime 与 time.Time 写入方式,帮助你选对 API。186 收藏 -
解释 Go Excelize 读取公式单元格时拿到旧结果的原因,区分缓存值与重新计算值,并给出 CalcCellValue 的排查和使用方法。326 收藏 -
Go go-toml 编码后空值仍出现,先检查 toml 标签而非 json 标签。通过备注与重试次数的小型导出器,说明空字符串省略和有效零值保留的不同契约。488 收藏