Go语言技术文章
-
Go 的 cmp.Equal 默认按切片下标比较,元素相同但顺序不同仍会判不等。本文用 cmpopts.SortSlices 为基本类型和结构体切片提供确定性排序规则,并说明重复元素、nil 与空切片的边界。162 收藏 -
Go csvutil 按表头名称和 csv 标签匹配独立字段,而非依赖结构体位置。通过双样本小项目解释列重排,并说明无表头、表头失配和自定义字段依赖的边界。200 收藏 -
Go csvutil 解码 CSV 空字段时,普通值会得到类型零值,指针字段会得到 nil;本文用对照示例说明 omitempty、结构体复用和缺失状态的处理边界。475 收藏 -
测试里用 time.Now 生成的时间字段会让 got 和 want 每次都不一样。本文只围绕 go-cmp 解释如何用 cmpopts.IgnoreFields 忽略指定字段,同时保留其它业务字段的差异,并区分时间容差比较、嵌套字段路径和全局忽略类型的边界。363 收藏 -
csvutil 遇到 CSV 表头缺少结构体字段时,默认会保留字段零值;若业务要求表头完整,可打开 DisallowMissingColumns,让 Decode 返回 MissingColumnsError。本文还区分行字段缺失与表头缺失,并给出宽松导入、严格导入和多余列处理方案。220 收藏 -
用 Go csvutil 编写逐条解码库存 CSV 的统计工具,只保留当前结构体与计数器,说明 EOF、表头、空字段和下游持有方式为何影响真正的流式处理。327 收藏 -
Go csvutil 处理 HexID、业务枚举等非基础字段时,可以用 UnmarshalCSV/MarshalCSV 或注册转换器统一文本格式。本文按升级变更单的方式比较旧写法与新写法,说明错误处理、注册优先级和回归检查。326 收藏 -
本文围绕 Go csvutil 的 CSV 表头映射,说明如何用 csv 结构体标签把外部列名写入指定字段,并介绍自定义 Decoder.Tag、空值、未知列和表头差异等边界。152 收藏 -
Excelize 的 StreamWriter 写完行并不等于工作表流已经结束。本文把 SetRow、Flush 和 SaveAs 放在同一条边界线上解释,说明为什么 Flush 必须位于每个工作表的流式写入末尾,以及 AddTable、递增行号、普通模式混用和大数据量临时文件等容易混淆的地方。467 收藏 -
Excel 日期本质上是序列数字,显示成日期依赖单元格格式。本文对比 Excelize 的原始读取、格式化读取、1904 日期系统、ExcelDateToTime 与 time.Time 写入方式,帮助你选对 API。186 收藏 -
解释 Go Excelize 读取公式单元格时拿到旧结果的原因,区分缓存值与重新计算值,并给出 CalcCellValue 的排查和使用方法。326 收藏 -
用 Go Excelize 为工单状态列添加下拉数据校验,拆分目标区域与候选来源,给出错误处理完整示例,并说明内嵌列表、单元格引用和输入提示的适用边界。313 收藏 -
Excelize 的 NewStyle 返回当前工作簿内的样式 ID,SetCellStyle 再把它绑定到单元格或区域。本文用缓存和区域复用说明如何避免循环创建重复样式,并梳理工作簿边界与样式拆分规则。246 收藏 -
Go go-toml 编码后空值仍出现,先检查 toml 标签而非 json 标签。通过备注与重试次数的小型导出器,说明空字符串省略和有效零值保留的不同契约。488 收藏 -
Go Excelize 写入大量工作表行时,可以用 NewStreamWriter 获取流式写入器,按递增行号调用 SetRow,最后 Flush 后再保存文件。本文结合实际使用说明内存边界、收尾顺序和不能混用普通写入 API 的限制。117 收藏