-
Go RawURLEncoding 不接受等号,需按发送方选择 URLEncoding 或无填充配置。本文给出兼容函数、预期样本与基准方法,说明错误处理和适用边界。
-
math/big.Int.SetString 解析失败时返回 nil,但接收对象的值是未定义的,可能继续显示旧值。本文解释返回值契约、base 参数和对象复用的安全写法。
-
Go encoding/xml 遇到 XML 前缀从 p 变成 ns 后匹配失败时,应比较命名空间 URI 与本地名,而不是比较短前缀。本文用 xml.Name、XMLName 标签、DefaultSpace 和最小回归样例说明排查与修复边界。
-
Go encoding/csv 遇到 CSV 字段数量不一致时,不必直接丢弃整条记录。本文用 FieldsPerRecord、ParseError 和 InputOffset 拆分正常行与坏行,保留可复查的错误位置。
-
Go compress/gzip 读取后 Header.Name 为空,不等于压缩数据明确记录了一个空文件名。本文从 FNAME 标志、Writer 写入条件和 Reader 解析行为说明如何区分可知信息与不可知信息,并给出稳妥的排障与设计方式。
-
使用 Go archive/tar 读取压缩归档时,当前条目读完的 io.EOF 与归档截断并不是一回事。本文解释 Header.Size、Reader.Read、Reader.Next 和 io.ErrUnexpectedEOF 的边界,并给出不吞错的读取写法。
-
Go os.CopyFS 遇到符号链接时不是读取链接目标,而是读取链接本身并在目标目录重建链接。本文区分缺少 fs.ReadLinkFS、目标已存在和系统权限三类失败原因。
-
OpenInRoot 的 dir 可采用可信绝对目录,name 应使用根内相对名称。本文说明从 os.Open 迁移时的参数变化,给出带关闭和大小限制的读取示例,并区分词法检查、符号链接与权限边界。
-
Go reflect.Value.CanSet 为 false 时,先区分反射值是否可寻址,再检查字段是否来自未导出成员。本文用值副本与指针 Elem 对比,说明怎样安全修改导出字段,以及为什么未导出字段不应绕过封装。
-
Go text/template.ParseFiles 按文件基名建立模板名称,包级调用的根模板取第一个文件,方法调用还要注意 New 名称与 Execute 的关系。本文用多文件、同名覆盖和 ExecuteTemplate 示例固定调用边界。
-
html/template 的 Execute 返回错误时,Writer 里可能已经存在部分 HTML。本文说明执行错误与写入错误的区别,并给出用 bytes.Buffer 先渲染、成功后再提交 HTTP 响应的稳妥写法,同时说明流式输出何时只能接受部分结果。
-
Go database/sql 的 sql.NullTime 扫描 NULL 后应让 Valid=false。本文拆开 NULL、有效时间、扫描错误和对象复用四种状态,给出 QueryRow、Rows.Scan 与 Value 的正确处理方式。
-
Go database/sql 的 Result.RowsAffected 不是所有数据库驱动都支持。本文区分执行错误、可信影响行数、零行结果和驱动不支持,给出不误判、不重复执行的处理方式。
-
解释 log/slog ReplaceAttr 处理嵌套 Group 时 groups 与 a.Key 的边界,给出按完整路径脱敏的写法,并区分 Group、LogValuer、Any 和 Handler 配置范围。
-
RuneError 不能单独代表解码失败:DecodeRuneInString 返回 RuneError 且 size 为 1 时,才表示非空输入的 UTF-8 编码非法;合法的 U+FFFD 通常占 3 个字节,空字符串则返回 size 为 0。