Go http.ServeFileFS 用 fs.FS 提供文件或目录响应,适合把 embed.FS 等抽象文件系统接到 HTTP 服务。本文从旧的 ServeFile 路径写法迁移到 fs.Sub 与 ServeFileFS,说明 name、io.Seeker、用户输入和 index.html 重定向等边界。
Go filepath.EvalSymlinks 返回错误时,不要只比较错误字符串。本文用 errors.Is 区分不存在和权限,用 errors.As 读取 PathError 的操作与路径,并说明非目录组件、损坏链接、循环链接等边界。
Go encoding/csv 默认会用首条记录的字段数量约束后续记录。本文用最小输入复现 ErrFieldCount,并比较严格校验与可变字段读取的处理方式。
Go encoding/json 遇到 NaN、+Inf 或 -Inf 时会返回 UnsupportedValueError。本文用最小示例区分错误类型,并给出序列化边界的有限浮点检查与业务取值方案。
Go ast.FilterDecl 不会筛选参数列表中的名称。本文通过最小示例说明其声明过滤范围、原地修改与返回值含义,并区分签名展示和源码参数重命名所需的处理方式。
http.Server.BaseContext 的字段为 nil 与回调返回 nil 不是一回事:前者使用 context.Background,后者会在服务器开始接收连接前触发 panic。本文按启动时间线拆开这个边界,给出非空 Context 修复写法和回归测试。
slices.BinarySearchFunc 查不到值时,最先要检查的不是二分算法,而是比较函数是否按 func(E, T) int 返回“切片元素相对目标”的结果,以及切片是否按同一规则有序。本文用结构化切片说明方向、边界和插入位置。
在 Go 中,for range 遍历结构体切片时,值变量通常是当前元素的一份复制品。直接修改 item.Name 只会改变这份副本,原切片不会变化。本文用排查清单拆开 range 的赋值语义,并给出索引修改、显式写回和指针切片三种写法。
Go encoding/json 处理连续 JSON 对象时,可以为同一个 io.Reader 创建 json.Decoder,反复 Decode 并用 io.EOF 结束。本文封装一个可复用的泛型读取函数,说明空输入、语法错误、数组边界和大流式输入的处理方式。
time.AfterFunc 的 Stop 返回 false 只说明定时器已经过期或停止,并不代表回调已经执行完。本文用 done 通知说明如何安全等待已启动的回调结束。
Go 的 ast.CommentGroup.Text 面向文档文本,会去掉注释标记、整理空行,并过滤 //line、//go:noinline 等注释指令。本文对比 Comment.Text 与 Text 的职责,说明 ParseComments 的入口和源码工具中的选择方法。
用 Go 1.23 的 iter.Pull 把 push-style 迭代器接入一个可复用的 TakeUntil 工具,讲清 next、stop、提前退出和并发边界。