Go问答技术文章
-
用最小配方修复 iter.Seq2[T,error] 的错误返回链,覆盖数据源、转换适配器、消费端与 Pull2 的常见吞错位置。383 收藏 -
Go HTTP客户端的超时并不等于连接立即释放。本文从总时限、阶段超时、响应体关闭和连接池排队四个角度定位连接长期占用,并给出可直接迁移的配置与检查清单。378 收藏 -
Go gob 的接口字段会携带动态具体类型名称,接收端必须预先知道该名称对应的本地类型。本文说明 Register、RegisterName、指针类型与跨进程注册表的正确用法。374 收藏 -
Golang · Go问答 | 23小时前 | 标准库 · Context · 并发编程 · go语言 · 错误排查 · 后台任务 Deadline context取消 context.WithoutCancel Go排查
context.WithoutCancel 本身不会返回 Deadline,但后台任务仍可能从新派生的 WithTimeout 或误用的原始请求 Context 获得时间边界。本文用最小探针定位来源,并给出保留上下文值、脱离请求取消且仍可回收的写法。374 收藏 -
短任务已经返回并不代表 goroutine 已退出。本文用 goroutineleak 和 pprof 拆解结果发送、提前返回、取消与排空之间的生命周期关系,给出可落地的修复清单。372 收藏 -
Go 解析无时区字符串时相差八小时,通常是把 UTC 解析规则、目标 Location 和数值偏移混为一谈。本文用 Parse 与 ParseInLocation 对比说明“解释字符串”和“In 转换显示”的差别,并给出 RFC3339、数据库及比较时间的稳妥写法。368 收藏 -
本地能下载私有 Go 模块,pkg.go.dev API 仍可能返回 not found。本文解释公共索引边界、GOPRIVATE 的真实作用,并给出私有代理与本地排查方案。368 收藏 -
说明 Go CrossOriginProtection 与 CORS 同时配置时的职责差异:前者决定非安全跨源请求能否进入业务处理器,后者决定浏览器能否跨源读取响应,并给出共享白名单、中间件顺序和测试矩阵。367 收藏 -
Go 测试分层的关键不在测试数量,而在依赖边界:单元测试隔离进程内规则,集成测试验证真实数据库或协议适配,端到端测试确认关键业务链路闭环。本文用订单服务和 Go testing 示例给出判断表、数据清理与失败定位方法。366 收藏 -
反复调用 regexp.MatchString 时,包级函数会把正则编译带进热路径。本文拆开调用链,给出固定模式与动态模式两种缓存设计,并处理并发、编译失败和容量边界。364 收藏 -
Go 1.23 的 slices.Chunk 会把每个分组容量裁到长度。本文从三索引切片、底层数组共享和 append 扩容讲清设计原因,并给出修改、追加、异步留存与 Clone 的工程决策边界。363 收藏 -
cgo 的固定边界成本、指针与转换规则会在细碎调用中被放大。本文用调用计数、基准和 profile 分层定位,并示范把逐元素调用改成安全的批量接口。361 收藏 -
Go 并发代码里,原子计数器并不会自动保护同一结构体中的普通字段。本文从快照偶发不一致的故障现场出发,说明混用为什么仍会产生竞态,并给出全原子、互斥锁和原子快照的修复边界。360 收藏 -
Go 的 QueryRowContext 总会返回非 nil 的 Row,查询错误、无结果和类型转换问题会延迟到 Scan。本文用可运行的错误分支解释这一设计,并给出 sql.ErrNoRows、Context 和 Row.Err 的正确处理方式。358 收藏 -
对比 Go FlightRecorder 与 trace.Start 持续 execution trace 的触发时机、数据范围和资源边界,并用可切换小项目给出选型方法。358 收藏