-
Go HTTP 服务可以通过 Server.ConnContext 为新连接创建带元数据的上下文,后续请求从 r.Context() 继承读取。本文用连接追踪标识演示配置方式,并比较 BaseContext、ConnContext 与请求级 WithContext 的边界,说明 HTTP/2 并发和资源清理时的注意事项。
-
Go 的 http.Server.ErrorLog 专门接收连接接收失败、Handler 异常行为和底层文件系统错误。本文按工作流说明如何创建自定义 log.Logger、注入 Server、理解 nil 默认行为,并区分它与业务访问日志。
-
Go handler 的取消分支不必依赖真实网络超时。本文用 httptest.NewRequestWithContext 构造已取消和带截止时间的请求,区分 context.Canceled 与 context.DeadlineExceeded,并说明 ResponseRecorder、取消时机和断言边界。
-
testing/quick.Check 的随机失败要靠可复用的随机源来复现。本文说明如何记录 CheckError.In、Count 和 seed,并保持 Config、Generator 与迭代上限不变,稳定重跑同一组输入。
-
Go testing/quick.Value 默认生成结构体时遇到未导出字段会受反射写入边界影响,本文说明 Generator、Config.Values 与构造函数的选择方法。
-
Go go/build.MatchFile 判断的不是孤立文件名,而是文件扩展名、GOOS/GOARCH 后缀、文件头构建约束与 Context 配置的组合。本文用跨平台源码扫描场景拆开这些条件,并给出可复用的调用方式。
-
Go ast.FilterFile 不只是按名称裁剪顶层声明,它还会无条件移除导入声明。本文用一份带导入、类型和函数的 AST 拆开过滤边界,说明返回值、字段过滤和保留原始导入的处理选择。
-
Go go/doc.ToText 可以把文档注释写成适合终端阅读的纯文本。本文拆开 prefix、codePrefix、width 的作用,说明链接识别限制,并给出迁移到 Package.Text 与 comment.Printer.Text 的选择方法。
-
Go 自动生成文档时,可以用 go/doc.Filter 把文档树裁剪成公开 API 视图。本文从 Package.Filter 的实际行为出发,说明名称过滤器、类型成员边界、包注释清空和复制文档对象时的取舍。
-
面向以 -cover 构建的长期运行程序,说明 Go runtime/coverage.WriteCountersDir 生成的计数快照如何与匹配的元数据配合,并用 go tool covdata 做汇总分析。
-
Go sync.RWMutex.TryLock 会尝试获得写锁并立即返回结果。本文用缓存刷新场景说明它与 Lock 的阻塞差异、成功后的 Unlock 责任,以及何时可以跳过一次写入、何时必须排队完成。
-
面向以 -cover 构建的长期运行程序,说明 Go runtime/coverage.WriteMetaDir 如何写出覆盖率元数据、如何准备目录,以及它与计数快照的边界。
-
Go sync.Mutex.TryLock 返回 false 代表没有获得锁,不代表锁已经解锁。本文用最小代码说明成功分支的 defer Unlock、失败分支的直接返回,以及 TryLock 的兼容与使用边界。
-
Go 反射遍历 map 时,MapIter.Value 会返回当前元素的 reflect.Value;Value.SetIterValue 可以在目标 Value 可设置且类型可赋值时直接接收当前值,避免额外构造一个 Value。本文给出复制循环、边界条件与回退清单。
-
在反射构造切片时,reflect.Value.Grow 可以提前保证追加空间,但它只接受可设置的 Slice Value,不改变切片长度。本文从批量映射场景出发,梳理 Grow 与 append、SetLen 的职责,以及 Kind、CanSet、负数参数和容量溢出的 panic 边界。