Go教程技术文章
-
用 Go net.Resolver.LookupSRV 查询服务记录,拆解 Target、Port、Priority、Weight 的职责,并给出带超时、可直接交给 DialContext 的地址转换写法。201 收藏 -
解释 Go Readdirnames 正数分批读取中的 io.EOF,展示先消费名称再判断错误的完整代码,并区分非正数读取、业务错误与目录句柄关闭。202 收藏 -
Go net.Resolver.LookupCNAME 返回跟随零个或多个 CNAME 后的最终规范主机名。本文说明如何用带超时的 Resolver 查询、区分名称变化与解析失败,并解释没有 CNAME 但有地址时为什么仍可能成功。279 收藏 -
Go httptest.ResponseRecorder.Result 返回处理器执行完成后的 http.Response 快照。本文比较记录器字段和最终响应的差异,并给出状态码、响应头、响应体的稳定读取方式。280 收藏 -
解释 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 收藏