Go问答技术文章
-
用一个小型 CSV 检查工具,把 Go encoding/csv 的 ParseError 行列、InputOffset 字节边界和原始行片段组合起来,快速定位坏记录。398 收藏 -
Golang · Go问答 | 3星期前 | csv · Go问答 · 错误排查 · 数据导入 · FieldsPerRecord LazyQuotes ParseError Go encoding/csv CSV引号错误
围绕 Go encoding/csv.Reader 的 LazyQuotes 参数,对比严格解析和引号容错的边界,说明 ParseError、FieldsPerRecord、部分记录与行列坐标如何组成可追踪的 CSV 导入策略。146 收藏 -
讲清 Go encoding/csv 的 FieldsPerRecord 三种模式,说明 ErrFieldCount 返回 record 的处理方式,并给出固定模板、首行推断和变宽 CSV 的错误分流方案。291 收藏 -
Go 使用 archive/tar 解包时,先把 Header.Name 归一化为目标目录内的相对路径,再用 filepath.Rel 判断边界,并分别处理目录、普通文件和符号链接。115 收藏 -
Go archive/tar 不应通过文件名后缀判断 Tar 链接。读取 Header.Typeflag 区分 TypeLink 与 TypeSymlink,再从 Header.Linkname 记录目标;链接条目没有可供 Reader.Read 消费的正文。459 收藏 -
Go archive/tar 会自动处理 PAX 元数据头。读取时用 Header 获取已映射的标准字段,用 Header.PAXRecords 读取自定义扩展键,并在 Next、路径和类型转换处做好兼容处理。487 收藏 -
Go archive/zip 的 Writer.Create 遇到同名路径不会覆盖,而会追加重复条目。本文用路径规范化、seen map 和待写集合,分别实现拒绝重复与最后一份生效两种方案。435 收藏 -
Go archive/zip 读取 Zip 文件时,要分别关闭 OpenReader 返回的归档句柄和 File.Open 返回的条目流。本文用单条目函数、io.Copy 和关闭边界表说明提前返回、循环 defer、NewReader 与底层 ReaderAt 的资源责任。175 收藏 -
Go读取ZIP时,不能把压缩包内的Name直接拼接到输出目录。本文用archive/zip、path.Clean和filepath.IsLocal组合校验相对路径,说明ErrInsecurePath、反斜杠、盘符与目录条目的处理边界。187 收藏 -
Go 文件移动应优先使用 os.Rename;遇到跨文件系统错误时,在目标目录创建临时文件复制、Sync、关闭后再 Rename 提交,并正确处理源文件清理失败。260 收藏 -
Go 用临时文件替换配置或缓存文件时,新文件默认权限可能与旧文件不同。本文演示如何读取旧文件的权限位、应用到临时文件,并处理 umask、平台和异常清理边界。452 收藏 -
Go 使用 os.File 更新配置或状态文件时,先在同目录临时文件中完整写入并 Sync,再关闭文件并 Rename,既避免半文件,也能清楚区分原子替换与断电持久化边界。448 收藏 -
Golang · Go问答 | 4星期前 | 错误处理 · 事务 · database/sql · Go问答 · Go database/sql Tx Go事务重试 Go死锁处理 Go序列化冲突 database/sql错误分类
围绕 Go database/sql Tx 讲清可重试并发冲突与业务错误的边界:驱动错误映射、单次事务回滚、事务外有限重试以及提交状态未知时的幂等处理。218 收藏 -
围绕 Go database/sql Tx 讲清异常路径统一回滚的写法:用 defer 兜底、事务内统一使用 Tx、正确处理 Commit 错误,并给出资源释放检查清单。448 收藏 -
用 Go database/sql 设计业务事务时,把 BeginTx、Commit 和 Rollback 放在用例外层,让仓储函数只接收 Tx 并返回错误,避免事务职责分散。215 收藏