Go问答技术文章
-
panicreturn 不是 Go 内置函数名。遇到 panic 后 recover 为空、程序继续崩溃或 error 没有返回时,应从同一 goroutine、defer 直接调用和命名返回值三个位置排查。269 收藏 -
解释 Go sql.Conn.Raw 中 driverConn 的借用生命周期,说明为什么不能跨回调保存底层驱动连接,并给出同步调用、结果复制与 ErrBadConn 处理的安全模板。269 收藏 -
Go 的 iter.Seq 是由 yield 返回值驱动停止的。本文解释 range 提前 break、iter.Pull 的 stop,以及自建异步生产者为何会继续运行,并给出可复查的资源回收方案。269 收藏 -
Golang · Go问答 | 4星期前 | 性能排查 · HTTP客户端 · Go问答 · MaxIdleConnsPerHost Go连接池 Go transport http.Transport连接复用 HTTP keep-alive
Go http.Transport 默认会缓存连接供后续请求复用,但前提是 Transport 长期复用、响应体正确收尾,并按上游数量配置空闲连接。本文给出 Client、Transport、Body 和 httptrace 的判断方法。268 收藏 -
本文解释 atomic.Value 首次写入如何固定具体类型,分析值与指针、接口动态类型、nil 写入导致 panic 的原因,并给出稳定包装类型的安全方案。268 收藏 -
解释 Go 旧结构体中 64 位原子字段的对齐和复制边界,给出 atomic.Uint64 迁移、外部布局拆分、32 位构建与 go vet 复查方案。268 收藏 -
Golang · Go问答 | 3星期前 | 单元测试 · 错误处理 · go · Go testing.T Cleanup失败 Go t.Cleanup错误处理 Go测试清理函数继续执行 Go测试失败不终止 Go测试资源释放排查
t.Cleanup 是测试结束阶段的清理回调,失败只会影响测试结果或当前清理函数,不会回到注册点打断已经继续执行的测试体。本文按执行时机、失败标记和清理顺序拆解排查方法。267 收藏 -
使用Go标准库mime/multipart解析上传请求时,先从Content-Type取得boundary,再用multipart.Reader按部件读取Header、字段名和文件名,并正确区分io.EOF与解析错误。267 收藏 -
Go regexp 遇到 .+ 贪婪匹配时,字段可能跨过分隔符吞掉后续内容。本文用可复现输入对比贪婪、非贪婪和字符类边界,并给出子匹配回归清单。267 收藏 -
Go 的 fmt 在格式化实现 Stringer 的值时会调用 String;如果 String 再把原接收者交给 fmt,就可能反复分派。本文给出复现、修复与方法集边界。267 收藏 -
Go 的 rows.Scan 成功只说明当前行完成了类型转换,rows.Err 才能确认整个结果集迭代没有在 Next、网络或 context 取消处失败。本文给出可直接复用的处理模板和边界清单。267 收藏 -
结合 Go 1.27 对具体泛型方法的支持,解释为什么接口方法仍不能声明额外类型参数,并用顶层泛型函数、接收者提升参数、具体泛型方法和窄接口四种方案重构 API。267 收藏 -
Go mod tidy 移除本地 replace 依赖,通常不是本地模块不支持,而是 replace 没有对应 require、模块路径不匹配或代码已不再导入。本文用模块图、go.mod 边界和 tidy -diff 给出排查与修复方法。266 收藏 -
Go 的 encoding/json 会把 JSON null 解成 nil 切片,把空数组解成非 nil 的零长度切片。本文用可复制示例说明字段缺失、null、[] 的区别,以及如何在接口输出时稳定选择 null、[] 或省略字段。266 收藏 -
Golang · Go问答 | 3星期前 | net/http · Go问答 · ReadTimeout ReadHeaderTimeout Go HTTP 超时 http.Server 超时配置 Go 请求头超时
Go 的 HeaderTimeout 实际对应 http.Server.ReadHeaderTimeout。本文用一组 http.Server 配置说明如何把请求头、完整请求读取、响应写出和 keep-alive 空闲预算分开设置,并指出两个读取超时不相加的边界。266 收藏