Go语言技术文章
-
讲清 Go httptrace.WroteHeaderField 观察的请求头写入边界,并给出脱敏、并发安全和 WroteRequest 配合记录的实现方式。462 收藏 -
Go 升级后 go test -shuffle 下出现行为变化,先不要把失败归因于随机数。本文比较关闭随机化、固定 seed、子测试缩小范围和并行复查四种定位方式,帮助你把顺序依赖与工具链差异拆开。462 收藏 -
Go 的 go/format.Node 可以把 AST 节点按 canonical gofmt 风格写入 io.Writer。本文从 parser.ParseFile 开始,说明 FileSet、节点范围、错误处理,以及 Node 与 Source 的取舍。461 收藏 -
Go 1.22 以后,ServeMux 会在注册互相冲突的方法模式时直接 panic。本文用最小复现说明冲突判定规则,并给出统一通配符、拆分 HTTP 方法和处理版本迁移的修复方式。461 收藏 -
go/types.Info.Scopes 只会记录类型检查器为指定 AST 节点建立的词法作用域。本文用一个最小示例说明如何初始化作用域映射、完成 Check、按节点读取 Scope,并解释函数体 BlockStmt 为什么不单独出现在映射中。460 收藏 -
讲清 Go database/sql.Tx.StmtContext 如何把已有的 DB 级预编译语句绑定到当前事务,并比较 Tx.PrepareContext、ExecContext 的适用场景、上下文边界和关闭时机。459 收藏 -
Go 的 io/fs.ValidPath 没有 nil 参数,所谓空值通常是空字符串。本文梳理空字符串、.、首尾斜杠、. 与 .. 元素、非法 UTF-8 的判断结果,并用小函数把语法错误和文件不存在分开处理。459 收藏 -
Go 的 time.Format 布局中的 MST 只是时区缩写占位符,不会单独完成时区转换。本文区分 MST、数值偏移、Location 和 In 的职责,并说明带缩写字符串解析时的零偏移边界。457 收藏 -
Go reflect 查到未导出字段不代表能调用 Interface 或 Set。本文区分字段存在、导出、可寻址与可修改,给出返回明确错误的读取示例及公开接口替代方案。456 收藏 -
Go 的 OnProxyConnectResponse 回调发生在 Transport 检查 200 OK 之前。本文用代理主机、目标主机、状态码和错误返回说明如何诊断 CONNECT,并区分代理响应、TLS 握手与最终请求失败。455 收藏 -
Go net/url.URL 修改路径时,直接重建整条 URL 容易丢掉查询参数和片段。本文区分 Path、RawPath 与 RawQuery,说明怎样用 Path、JoinPath 以及 Query 安全更新路径和参数。455 收藏 -
说明 Go slices.BinarySearch 的升序输入前提、插入位置与命中标志,提供复制输入并构建整数索引的完整示例,解释空切片、重复值和末尾位置的边界,避免迁移旧查找代码时越界。453 收藏 -
Go runtime.LockOSThread 只适用于依赖线程局部状态的操作系统服务或非 Go 库调用。本文说明判断条件、成对解锁、专用锁定 goroutine 以及不能恢复线程状态时的退出边界。451 收藏 -
Go httptrace.DNSDone 回调里的 Err、Addrs 和 Coalesced 分别表示什么?本文从请求上下文接入 ClientTrace,说明如何读取 DNS 阶段错误、区分最终请求错误,并处理回调并发与空地址列表。451 收藏 -
Go io/fs.Sub 可以从已有 fs.FS 派生一个只看到指定子目录的新文件系统视图。本文用 fstest.MapFS 说明路径前缀、根目录、错误处理和 embed.FS 迁移时的实用边界。450 收藏