Go语言技术文章
-
解释 Go io.SectionReader.Outer 返回直接父窗口的语义,并用逐层累加偏移、截断父窗口剩余长度的方法还原嵌套读取区间。254 收藏 -
通过请求级 ClientTrace 记录 103 Early Hints,区分信息响应与最终 Body,说明回调绑定、并发计数、错误返回的影响,以及停用观测与日志排查的方法。287 收藏 -
Go 的 gob 同时遇到 GobEncoder 和 BinaryMarshaler 时,会优先调用 GobEncoder。本文从接口优先级、值与指针方法集、错误处理和持久化版本四个方面说明如何稳定控制编码路径。327 收藏 -
encoding/gob 解码到已有 map 时不会先清空目标,传入数据会覆盖同名键,未出现在流中的旧键仍然保留。本文说明合并语义、nil map 的初始化方式,以及需要替换数据时如何避免旧状态残留。466 收藏 -
Go slog.ReplaceAttr 的 groups 参数表示当前叶子属性所在的打开分组路径。本文用根属性、嵌套分组和定向脱敏示例说明如何按路径判断,避免误删同名字段。311 收藏 -
通过 CR、LF 和 CRLF 三组输入,说明 Go mime/quotedprintable.Writer 的 Binary 模式如何保留换行字节,以及它不会改变哪些编码规则。421 收藏 -
解释 io.Pipe 读取端提前关闭时写入返回 ErrClosedPipe 的原因,对比两端 CloseWithError 的传递方向,并通过原创建例说明部分写入、错误识别和生产者收尾。405 收藏 -
Go net/http 的 CrossOriginProtection 被拒绝时,可以先用 SetDenyHandler 设置统一的 403 响应,再交给 Handler 包装业务处理器。本文对比 Handler 与 Check 的职责,给出 JSON 拒绝响应和手动处理 error 的写法。309 收藏 -
Go http.Header.WriteSubset 不会替 exclude 的键做规范化。本文拆开 Set/Add、直接写 map 与排除映射的关系,给出稳定过滤 Header 的写法和兼容旧数据的处理边界。216 收藏 -
解释 Go url.ResolveReference 在空路径、查询串和片段之间的继承条件,通过原创建例区分空引用、显式问号与新路径,并说明保持原始查询和清除片段的业务取舍。459 收藏 -
Go 的 os.UserHomeDir 不是无条件返回一个目录:Unix 通常读取 HOME,Windows 读取 USERPROFILE,期望变量缺失时可能返回平台默认值,也可能返回非 nil error。本文用 CI 场景说明如何复现、处理和测试这个边界。118 收藏 -
Go testing.T.Attr 的键不能包含 Unicode 空白,值不能包含回车或换行;违规时会让测试失败并跳过该属性。本文解释约束来源、错误模型,以及如何把自由文本稳定映射为可记录的单行属性。255 收藏 -
Go net/http.Transport 资源没有释放时,先检查 Response.Body 是否关闭并区分活动连接与空闲连接,再用连接池参数和生命周期清理控制资源回收。424 收藏 -
io.OffsetWriter 把逻辑偏移映射到基准偏移之上,Seek 返回的是逻辑位置,Write 和 WriteAt 的坐标也不能混看。本文用分段写入场景拆解错位原因,并给出调用约定、边界处理与排查清单。194 收藏 -
Go 的 Cmd.Wait 不只等待主进程退出,还可能等待 stdout、stderr 的复制循环收尾。本文用 WaitDelay 拆解后代进程遗留管道导致的阻塞,演示如何设置等待上限并用 errors.Is 判断 ErrWaitDelay,同时说明阻塞 Writer 和进程树管理的边界。359 收藏