Go语言技术文章
-
本文围绕 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 收藏 -
从 go-toml v1 的 Tree/Get 读取迁移到 go-toml/v2 结构体解码,关键不是机械替换函数,而是重写模块路径、字段映射和动态配置边界。本文用最小改造示例说明 Unmarshal、Decoder、严格字段与 DecodeError 的取舍。286 收藏 -
go-toml/v2 默认会忽略目标结构体没有的配置键。本文用 Decoder.DisallowUnknownFields 拒绝未声明字段,并说明 StrictMissingError、嵌套结构体与 map 的边界。158 收藏 -
go-toml 将不携带时区关系的本地日期、时间和日期时间,与带偏移的时间点分开处理。本文用 TOML 字面量、LocalDateTime、time.Time 和 AsTime(zone) 说明两者的语义边界与选型方法。419 收藏 -
Go go-toml v2 自定义 TOML 解码的完整做法:实现 unstable.Unmarshaler、启用 Decoder 接口,并处理嵌套表、默认值和业务错误边界。303 收藏 -
go-toml/v2 可以把 TOML 的 [[servers]] 表数组直接解码到 Go 的 []Server。本文从结构体标签、Unmarshal、流式 Decoder、严格未知字段和 DecodeError 几个边界,整理一套可直接复用的写法。106 收藏 -
把 Viper 的配置优先级转成 Koanf 显式加载顺序,处理未传参数、空环境变量、代码覆盖与快照重载,给出受控来源合成示例。224 收藏 -
Koanf 默认允许后加载的同名键覆盖前值,类型不同也不会自动报错;开启 StrictMerge 后,冲突会在 Load 时返回错误。本文用 map、字符串和切片说明合并边界,并给出多来源配置的落地策略。366 收藏