-
Go pprof 标签不见了,通常不是标签字符串失效,而是 profile 类型、标签作用域或采样窗口不匹配。本文按官方 runtime/pprof 语义,说明 pprof.Do、WithLabels、SetGoroutineLabels 的区别与排查顺序。
-
Go mod 中的 replace 相对路径依赖主模块目录和完整工作区,CI 中常因替换目录未检出、嵌套模块选错或目标缺少 go.mod 而失效。本文给出定位命令、仓库布局修复方式与切换模块版本的判断标准。
-
用最小示例拆开 Go os.Root 的根目录与相对名称,解释绝对路径、空路径、.. 越界和符号链接为什么会失败,并给出保留 PathError 的修复写法。
-
slog JSONHandler 输出字段顺序变化时,先区分 JSON 语义变化与文本排列变化。本文说明 With 属性、调用属性、分组和 ReplaceAttr 的影响,并给出结构化测试与固定字节协议的处理边界。
-
Go 的 io.Reader 允许在最后一批数据返回 n > 0 与 io.EOF,若代码忽略 n、处理空缓冲区或把整个 buf 当成有效数据,就会出现末尾多处理一次。本文用最小示例说明原因,并给出按 n 与 err 分开处理的可靠写法。
-
Go Cron 的 Remove 只移除未来调度,不会强行终止已经启动的 goroutine。本文拆开 Entry、调度器和任务执行边界,并给出用 context 主动取消任务的写法。
-
Go go-echarts 中,全局配置通过 SetGlobalOptions 作用于整张图,系列配置随 AddSeries 只作用于一条数据系列。本文用最小代码和对比清单说明两者边界、组合方式与常见误区。
-
Go 1.24 引入的 os.Root 可以把文件操作限制在指定目录树内。本文用 os.Root.Open 说明相对路径、..、符号链接、错误处理和关闭资源的边界,并对比一次性使用的 os.OpenInRoot。
-
Go race 检测器报告 map 并发读写时,先从两条访问栈确认共享对象和冲突类型,再用 go test -race 稳定复现,最后按访问模型选择 sync.RWMutex、单写者 channel 或不可变快照,避免只把一处读写临时包进锁里。
-
Go 服务请求结束后内存不降,不一定是 GC 失效。本文只围绕切片容量、缓存引用和 runtime/metrics 指标,说明如何区分活跃堆、保留的 backing array 与尚未归还的运行时页。
-
Go encoding/json/v2 默认会忽略结构体中没有对应字段的 JSON 成员。本文用 RejectUnknownMembers 开启严格解码,并通过 SemanticError、ErrUnknownName 与 JSONPointer 定位多余字段。
-
http.Request.Pattern 记录的是 ServeMux 为请求匹配到的注册模式;如果处理器被直接调用、请求没有经过 ServeMux,或只调用了 ServeMux.Handler,字段就可能为空。本文拆开这些边界,给出正确的观测位置和排查方法。
-
Go 临时文件删除失败时,关键不是无限重试 Remove,而是先关闭文件句柄、保留主流程错误,再按 PathError 判断权限、路径和生命周期问题。
-
Go 读取 tar 归档时,tr.Read 返回 EOF 只表示当前条目读完,tr.Next 返回 io.EOF 才表示整个归档正常结束。本文给出带错误分支的读取循环,并说明损坏输入、未消费数据和 ErrInsecurePath 的处理边界。
-
Go 1.22 起可以直接用 http.FileServerFS 接收 fs.FS。本文用 embed.FS 和 fs.Sub 说明嵌入目录、URL 路径、io.Seeker 要求、404 与 index.html 重定向之间的关系。