-
Go fmt.Errorf 通过 %w 同时保留任务上下文与错误原因,调用方使用 errors.Is 和 errors.As 判断类别并提取详情。结合配置解析示例说明多层包装、多原因与 nil 的边界。
-
Go sql.Tx 提交成功后再 Rollback 返回 ErrTxDone,表示事务对象已经结束,并不否定提交结果。通过事务收尾函数说明 defer 回滚、错误链保留、Commit 失败边界与收尾所有权。
-
Go net.ListenConfig 看起来不生效时,先确认监听是否由 lc.Listen 创建,再分别检查 Control 的执行时机、context 的作用范围、HTTP Server 是否复用了监听器,以及 KeepAlive 的连接级边界。本文用几个最小示例整理出一套可复用的排查顺序。
-
用一个任务集合实现 Go iter.Seq 范围迭代器,说明 for range、提前停止、闭包分配与并发修改边界,帮助批处理减少临时切片。
-
本文从可选配置键值拆分的排查现场出发,说明 strings.Cut 的 found 返回值、空输入处理、缺少分隔符和空字段边界,并给出可复用的 Go 解析示例。
-
Go fuzz 测试里的种子参数不是从 *testing.F 再取一次,而是由 f.Fuzz 回调的参数直接接收。本文用 string、[]byte 和 int64 示例说明 f.Add、回调签名、默认 go test、持续 fuzz、失败输入复现与 testdata/fuzz 的选择边界。
-
filepath.Glob 返回空结果不一定是模式写错:无匹配时 err 为 nil,模式语法错误时才会返回 filepath.ErrBadPattern。本文给出区分两类结果的写法,并补充跨平台路径和文件系统错误边界。
-
在 Go 批处理循环中复用 bytes.Buffer:用 Reset 清空长度、用 Grow 预留稳定容量,并处理 Bytes 别名与异常大容量,避免旧内容残留和不必要的分配。
-
Go 的 url.Values.Get 在参数缺失和参数值为空时都会返回空字符串。要保留这两种语义,应使用 Has 判断键是否出现,或直接读取 map 中的 []string,并结合 ParseQuery 的错误处理统一封装。
-
Go TCP 建连成功不代表业务响应完成。本文按读写阶段检查过期 deadline、缓冲刷新、协议帧和部分传输,并用独占连接示例说明交换预算与超时重试边界。
-
Go 的 SessionTicketsDisabled 会关闭 TLS 会话票据和 PSK 恢复支持,但客户端 ClientSessionCache 为空时也不会恢复。本文分清 TLS 恢复与 TCP 复用,说明客户端缓存、服务端票据和 ConnectionState.DidResume 的判断边界,并给出适合测试与安全策略切换的配置建议。
-
Go 的 go/ast.Inspect 看起来不生效,通常不是遍历函数没有执行,而是解析错误被忽略、回调类型筛选不匹配、return false 提前剪枝,或把 n == nil 的收尾回调误当成异常。本文从 ParseFile 到位置输出逐步拆解这些边界,并给出可直接改造的排查代码。
-
Go filepath.WalkDir 默认不会进入目录中的符号链接,这不是遍历失败,而是标准库刻意定义的边界。本文用最小目录树复现现象,再说明怎样读取链接本身、解析目标,并为显式递归补上循环保护。
-
Go mime.ParseMediaType 可以把 Content-Type 或 Content-Disposition 拆成规范化媒体类型、参数 map 和 error。本文说明 charset、boundary、引号参数、参数缺失与格式错误的处理边界。
-
Go http.Header.WriteSubset 不会替 exclude 的键做规范化。本文拆开 Set/Add、直接写 map 与排除映射的关系,给出稳定过滤 Header 的写法和兼容旧数据的处理边界。