Go语言技术文章
-
Go encoding/json/v2 默认会忽略结构体中没有对应字段的 JSON 成员。本文用 RejectUnknownMembers 开启严格解码,并通过 SemanticError、ErrUnknownName 与 JSONPointer 定位多余字段。299 收藏 -
用一个可复现的 Go 测试示例讲清 testing.T.Cleanup 的注册时机、后进先出顺序、子测试边界和 t.Parallel 下的安全清理方式。298 收藏 -
sync.Map.Range 适合做并发遍历,但不能当作一致性快照。本文用一个在线会话统计场景拆开 Range 的遍历语义、并发写入影响、O(N) 成本,并给出快照统计与可控停止的实现边界。298 收藏 -
Go 1.25 为 hash 包补充 XOF 接口。本文用 SHAKE 示例比较固定长度摘要与可扩展输出,说明 hash.Hash、hash.XOF、Read 和 Reset 的选择边界。298 收藏 -
Go 1.27 对 go.mod 的多组 require 块做了结构整理。本文从合并冲突和手工编辑后的现场出发,解释何时会重排、注释如何归属,以及升级后怎样做最小复查。298 收藏 -
Go map 单值读取时,缺失键和实际零值看起来一样。本文用双值索引解释如何判断键是否存在,并覆盖 nil map、不同值类型、默认值与业务封装边界。298 收藏 -
使用 golang.org/x/net/html 解析网页中的 a[href],再用 net/url 按页面基准地址补全相对链接,并说明片段、特殊 scheme 与外链控制的处理边界。298 收藏 -
Go 拉取私有模块时,GOPROXY、GOPRIVATE、GONOPROXY 与 GONOSUMDB 的职责不同。本文按直连仓库和私有代理两种架构给出配置,并用回退规则定位 404、403 与 sumdb 校验错误。298 收藏 -
go build -trimpath 会移除可执行文件中的本机目录,但不会删除函数名、行号和调用栈。本文解释 runtime.Caller 如何读取裁剪后的逻辑文件名,并给出生产构建、本地调试与源码版本关联的选择方法。298 收藏 -
Go 的 http.Client 默认不会替你保存登录后的 Cookie。为 Client 注入 net/http/cookiejar 的 Jar,并复用同一个 Client,登录响应里的 Set-Cookie 才能在后续匹配请求中自动带回。298 收藏 -
Go 的 time.Time 用 == 比较失败,通常不是时间点不同,而是 Location 或单调时钟读数不同。本文解释 Equal、Round(0) 与 UTC 的使用边界。298 收藏 -
Go TLS 中 InsecureSkipVerify 只影响客户端验证服务端证书链和主机名,服务端客户端证书校验应看 ClientAuth 与 ClientCAs。298 收藏 -
Go context 的子任务不是重新获得一段独立超时,而是受父 Context 更早 deadline 约束。本文用可观察的 deadline、Err 和 Cause 排查提前 deadline exceeded,并给出按剩余预算创建子任务的写法。298 收藏 -
解释 Go io.TeeReader 如何同步把读取内容写入旁路 Writer,以及写入失败为何会从 Read 返回,并给出 n、err、部分写入和重试边界。298 收藏 -
json.Decoder.InputOffset 给出当前解码边界;语法或类型错误则应优先使用对应错误的 Offset。文章提供安全截取附近原始字节、处理流式输入和 UTF-8 字节位置的完整方法。298 收藏