-
用 Go flag.TextVar 和 encoding.TextUnmarshaler 把命令行文本转换为自定义配置类型,演示 duration 解析、范围校验、默认值和错误处理。
-
io.MultiReader 会把当前 Reader 的 EOF 当作这一段结束并继续读取后续 Reader,只有全部输入结束才向外返回 EOF。本文用最小示例区分中间 EOF、真实错误、空输入和资源关闭边界。
-
Go 按字节截断可能拆开 UTF-8 编码。本文比较完整字节前缀与 rune 前缀,提供严格输入的原创函数,并说明替换字符、流式尾部和字素簇的判断边界。
-
Go 1.27 的 encoding/json/v2 默认拒绝 JSON 对象中的重复名称。本文用一个可复用的小函数说明如何识别重复键错误,以及何时显式使用 jsontext.AllowDuplicateNames(true) 兼容旧协议。
-
Go 升级后 encoding/json.Decoder 的结果或错误发生变化时,不要先修改业务逻辑。本文按工具链、实现、Decoder 配置、输入字节和目标类型五层建立最小复现矩阵,说明如何区分真实语义差异与错误文本变化。
-
Go time.DateOnly 代表 2006-01-02,可以同时用于 Time.Format 和 time.Parse,让日期字段统一输出与读取 YYYY-MM-DD。本文说明格式化、解析、错误处理、时区边界和日期类型封装。
-
Go 的 http.Request.UserAgent 会读取请求中的 User-Agent 字段。本文说明空值处理、日志记录和轻量归类,并划清它与认证、授权和设备识别的边界。
-
说明 Go runtime.AddCleanup 的输入与引用边界,通过独立清理状态、显式 Close 和幂等释放示例,解释 nil、闭包反向引用、KeepAlive、Stop 及不保证回调时机等问题,并给出计数与测量方法。
-
Go 的 csv.Writer 默认使用 LF;面向依赖 CRLF 的 Windows 工具导出时,应在第一次写入前设置 UseCRLF=true,并在 Flush 后检查 Error。本文拆开换行、缓冲和错误边界。
-
Go netip.Addr.IsGlobalUnicast 用来判断地址是否属于全局单播语义,但它不等于公网可达或业务授权。本文从 ParseAddr 开始,结合私有地址、唯一本地地址、链路本地地址、组播和零值样例,给出可复用的分类函数与边界清单。
-
Go time.Date 遇到夏令时回拨时,同一个本地墙上时间可能对应两个实际时刻。本文说明 Date 的不确定性,并用 Time.Equal、UTC、Unix 秒和明确偏移建立可靠的判断与存储方式。
-
Go net.Dialer 返回空连接时,先分清空地址、地址格式、名称解析和连接失败四个阶段。本文用 DialContext、SplitHostPort、Resolver 与错误链说明如何定位边界输入。
-
Go archive/zip.Writer.Copy 能把已有 ZIP 条目的 raw form 直接搬到新归档,避免未修改内容重复解压和压缩。本文给出重打包示例,并划清 Copy、CreateHeader、CreateRaw 与 Writer.Close 的使用边界。
-
runtime.KeepAlive 本身没有错误返回值。本文从受保护的资源操作入手,说明如何保留 n 和 err,再用 errors.Is、errors.As 区分中断、句柄失效与其他底层原因,并把 KeepAlive 放在正确的生命周期边界。
-
Go regexp.FindAllStringIndex 返回非重叠区间是设计行为,不是漏查。本文用 aba/ababa 说明左到右的匹配推进、n 参数的真实作用和 UTF-8 字节下标,并给出按 rune 起点推进的外部游标方案来收集重叠结果。