Go语言技术文章
-
Go 的 omitempty 只能按编码规则省略部分空值。把它与指针字段组合,可以清楚区分字段缺省、显式 null、空字符串和数字零值,适合 PATCH 请求与可选响应字段设计。136 收藏 -
ResponseRecorder适合验证处理器输出,但不能代表真实连接和协议行为。本文用状态、Header、正文、Flush与NewServer测试分层补齐覆盖边界。442 收藏 -
Go 使用 json.Decoder.Token 可以按对象边界逐项读取 JSON。本文给出带深度上限的递归实现,说明数组、标量、EOF、语法错误和资源边界。411 收藏 -
从路径段与查询参数的组件边界出发,解释 Go net/url 中加号、空格、PathEscape、QueryEscape 以及两组 Unescape 的差异,并给出避免二次编码的排查清单。364 收藏 -
用公共事件信封承载 Kind 与 json.RawMessage,先解析公共字段,再把动态 payload 分流到具体 Go 结构体,并处理未知类型、空载荷和兼容性边界。387 收藏 -
Go net/http 会按目标主机判断敏感请求头是否继续转发。本文结合 CheckRedirect 说明默认行为、跨域边界和受控目标的认证头处理方式。339 收藏 -
Go JSON接口增加字段时,先保持旧字段的名字、类型和语义不变,再用可选字段、默认值和灰度读取承接新客户端。本文结合 encoding/json、严格未知字段校验和回滚清单,给出一套不破坏旧客户端的迁移方法。431 收藏 -
区分Go http.Client.Timeout与Transport阶段超时,明确拨号、TLS、响应头、响应体和业务代码的时间边界。484 收藏 -
Go iter.Pull 将推送式迭代器转换为 next/stop 拉取接口。本文用惰性生产者说明如何用 defer stop 覆盖提前退出、自然结束和异常路径,并梳理 ok 判断、零值与并发调用边界。167 收藏 -
Go net/http 中 204 No Content 的正确用法:服务端不要写正文,客户端按状态码决定是否解码响应体。210 收藏 -
用 Go iter.Seq 把回调式遍历接入 for range,讲清 yield 提前停止、资源清理、iter.Pull 和单次迭代的工程边界。364 收藏 -
Go HTTP 客户端请求成功后,Response.Body 需要正确读取和关闭,否则 Transport 可能无法复用 keep-alive 连接。本文用代码和排查表说明未关闭、未读完、提前返回及 Client 复用的处理边界。307 收藏 -
Go encoding/json 默认会转义 JSON 字符串中的 HTML 特殊字符。本文用 Encoder.SetEscapeHTML(false) 对比 HTML 嵌入、API、日志和签名文本场景,说明关闭转义的正确边界。499 收藏 -
maps.Clone 会创建独立的顶层 map,但只做浅拷贝。本文用配置快照示例说明字符串、结构体、切片、嵌套 map 与指针字段的边界,并给出测试和深拷贝方案。141 收藏 -
Go map遍历顺序不应作为输出契约。本文用键切片排序和Go 1.23+的maps.Keys与slices.Sorted,演示如何在不修改原始map的前提下稳定输出配置项,并说明字符串键、数值键、空Map与并发边界。267 收藏