-
Go csv.Writer 的 Flush 没有 error 返回值,必须通过 Error 读取底层写入失败。本文区分 Write、Flush、Error 和外层交付边界,给出生产级 CSV 导出写法与排查清单。
-
Go encoding/csv.Writer 写入 CSV 时,Write 成功不代表底层输出已经完成。本文说明 Write、Flush、Writer.Error 的正确检查顺序,并解释 WriteAll 的错误传播方式。
-
Go ast.FilterFile 会原地裁剪 *ast.File,按 Filter 回调筛选顶层声明和相关字段。本文说明 ast.IsExported 的用法、返回值、导入移除、注释保留及重复处理边界。
-
Go 的 utf8.RuneError 不能单独代表非法输入:DecodeRune 对空输入返回 RuneError、size=0,对非法非空字节返回 RuneError、size=1;合法的 U+FFFD 则有正常字节宽度。本文用单点解码和整段校验两条路径说明如何准确判断。
-
Go 用 encoding/csv.Reader.ReadAll 读取小表时,FieldsPerRecord 为 0 会按首行固定字段数,设置为 -1 才能接受变长记录。本文说明如何读取、整理和区分不规则 CSV 行。
-
围绕 Go io.SectionReader.ReadAt 解释 n 与 err 的组合语义,说明局部偏移、区间末尾短读和 io.EOF 的正确处理方式,并给出不会丢弃部分数据的读取函数。
-
Go 的 encoding/csv 不负责字符集转换。本文用 golang.org/x/text/encoding/japanese 和 transform.NewReader,把 Shift_JIS 字节流先解码成 UTF-8,再交给 csv.Reader 流式读取。
-
围绕 Go encoding/csv Reader.Comma 讲清单字符分隔符、非法字符、注释符冲突和 ParseError 的排查顺序,帮助把配置错误与 CSV 内容错误分开。
-
Go encoding/csv.Reader 默认会校验记录列数。本文说明 FieldsPerRecord 的正数、零值和负值模式,并用表头映射短行,在业务层记录缺失字段,同时区分列数差异与真正的 CSV 解析错误。
-
Go encoding/csv 默认按规范 CSV 解析,遇到历史文件中的裸引号或未成对引号会返回解析错误。本文用 Reader.LazyQuotes 兼容读取这类记录,并说明字段数检查、ParseError 定位和不能由 LazyQuotes 解决的清洗边界。
-
用 Go debug/elf.NewFile 从 io.ReaderAt 打开 ELF 文件,读取 FileHeader 中的 Class、Data、Machine 和 Type,并给出架构识别、错误处理与资源释放的工程写法。
-
用 Go bufio.Reader.ReadBytes 区分完整记录、带数据的尾部 EOF、干净结束和非 EOF 错误,并根据协议决定是否接受没有终止分隔符的尾记录。
-
Go html/template.URLQueryEscaper 可以把多个参数的文本表示编码成适合嵌入 URL query 的字符串。本文从最小用法出发,说明空格和特殊字符的处理、模板上下文自动转义、重复 key 与空值边界,以及避免重复编码的工程写法。
-
用 Go flag.FlagSet.SetOutput 把 usage 和解析错误写入指定日志目标,配合 ContinueOnError、io.MultiWriter 和自定义 Usage 处理多命令行场景。
-
Go flag.FlagSet 的 VisitAll 会按参数名的字典序遍历全部参数,Visit 只遍历本次实际设置的参数。本文用两者组合生成带默认值、当前值和设置状态的自定义帮助信息,并说明自定义排序与输出边界。