Go教程技术文章
-
用 Go sqlmock 模拟事务第二次写入失败,按 Begin、Exec、Rollback 的顺序验证错误返回和回滚动作,避免测试误把提交当成成功。475 收藏 -
在 Go sqlmock 查询期望上配置 RowsWillBeClosed,并在函数返回后检查 ExpectationsWereMet。本文用提前返回的最小测试说明结果集关闭、自动关闭边界及资源责任的排查方法。133 收藏 -
用 cmpopts.EquateApprox 为 go-cmp 配置相对容差、绝对容差和接近零时的兜底边界,并说明 Equal、Diff、float32、NaN 与无穷大的排查方法。442 收藏 -
Golang · Go教程 | 16小时前 | 切片 · 单元测试 · go · Go go-cmp cmp.Diff cmpopts.SortSlices 切片比较 无序切片比较 cmp.Equal
Go 的 cmp.Equal 默认按切片下标比较,元素相同但顺序不同仍会判不等。本文用 cmpopts.SortSlices 为基本类型和结构体切片提供确定性排序规则,并说明重复元素、nil 与空切片的边界。162 收藏 -
测试里用 time.Now 生成的时间字段会让 got 和 want 每次都不一样。本文只围绕 go-cmp 解释如何用 cmpopts.IgnoreFields 忽略指定字段,同时保留其它业务字段的差异,并区分时间容差比较、嵌套字段路径和全局忽略类型的边界。363 收藏 -
用 Go csvutil 编写逐条解码库存 CSV 的统计工具,只保留当前结构体与计数器,说明 EOF、表头、空字段和下游持有方式为何影响真正的流式处理。327 收藏 -
Go csvutil 处理 HexID、业务枚举等非基础字段时,可以用 UnmarshalCSV/MarshalCSV 或注册转换器统一文本格式。本文按升级变更单的方式比较旧写法与新写法,说明错误处理、注册优先级和回归检查。326 收藏 -
本文围绕 Go csvutil 的 CSV 表头映射,说明如何用 csv 结构体标签把外部列名写入指定字段,并介绍自定义 Decoder.Tag、空值、未知列和表头差异等边界。152 收藏 -
用 Go Excelize 为工单状态列添加下拉数据校验,拆分目标区域与候选来源,给出错误处理完整示例,并说明内嵌列表、单元格引用和输入提示的适用边界。313 收藏 -
Excelize 的 NewStyle 返回当前工作簿内的样式 ID,SetCellStyle 再把它绑定到单元格或区域。本文用缓存和区域复用说明如何避免循环创建重复样式,并梳理工作簿边界与样式拆分规则。246 收藏 -
Go Excelize 写入大量工作表行时,可以用 NewStreamWriter 获取流式写入器,按递增行号调用 SetRow,最后 Flush 后再保存文件。本文结合实际使用说明内存边界、收尾顺序和不能混用普通写入 API 的限制。117 收藏 -
go-toml/v2 默认会忽略目标结构体没有的配置键。本文用 Decoder.DisallowUnknownFields 拒绝未声明字段,并说明 StrictMissingError、嵌套结构体与 map 的边界。158 收藏 -
Go go-toml v2 自定义 TOML 解码的完整做法:实现 unstable.Unmarshaler、启用 Decoder 接口,并处理嵌套表、默认值和业务错误边界。303 收藏 -
go-toml/v2 可以把 TOML 的 [[servers]] 表数组直接解码到 Go 的 []Server。本文从结构体标签、Unmarshal、流式 Decoder、严格未知字段和 DecodeError 几个边界,整理一套可直接复用的写法。106 收藏 -
用 Koanf env/v2 将带应用前缀的环境变量映射成嵌套配置键,说明双下划线、允许键集合、值转换和覆盖顺序,并给出受限配置示例。116 收藏