Go问答技术文章
-
用 go env -json 导出 Go 命令当前采用的有效编译环境,结合 -changed、指定字段和 Go 程序解析,适合 CI、部署排障与跨机器诊断。331 收藏 -
embed.FS.Open 接收的是 io/fs 规则下的逻辑相对路径,直接传入带 ..、绝对路径或反斜杠路径会失败。本文按故障时间线解释根因,并给出可复用的清理与边界处理方式。113 收藏 -
Go flag.FlagSet.Parse 遇到 -- 后会停止解析选项,后续参数通过 Args、Arg 和 NArg 读取。本文用最小示例解释位置参数被误判的原因,以及命令包装时如何安全透传参数。330 收藏 -
Go 的 flag.FlagSet.Visit 只遍历已经设置的命令行参数,适合生成启动日志和配置审计清单。本文用一个自定义 FlagSet 说明它与 VisitAll 的区别、排序规则和使用边界。225 收藏 -
Go database/sql 的 SetConnMaxIdleTime 看连接连续空闲多久,SetConnMaxLifetime 看连接从创建起活了多久。本文用时间线、配置示例和 DBStats 说明两者区别与组合方式。255 收藏 -
Go database/sql 的 ColumnType.DatabaseTypeName 返回空字符串时,如何区分驱动能力缺失与查询错误,并用显式映射、ScanType 和 unknown 设计稳定的跨驱动回退。369 收藏 -
已有 database/sql.Stmt 需要在事务里执行时,用 Tx.StmtContext 把它映射为事务专用语句。本文说明 context 的作用、提交或回滚时的关闭边界,以及 DB 级 Stmt 与事务级 Stmt 的清理方式。461 收藏 -
Go database/sql 查询只取前几行时,提前 break 并不会替调用方表达完整的资源释放意图。本文从 Rows 的接口职责出发,说明为什么拿到结果集后应尽早安排 Close,并区分 Scan、Rows.Err 与 Close 的错误处理边界。157 收藏 -
用 Go testing/iotest.TimeoutReader 在测试中稳定制造一次读取超时,区分 ErrTimeout、EOF 和其他错误,并验证调用方只对临时超时执行有限重试。171 收藏 -
解释 Go testing.T.Run 的布尔返回值、子测试失败日志与父测试汇总关系,给出保留案例名称和失败上下文的写法,并说明 t.Parallel 场景为什么不能简单依赖立即返回值。129 收藏 -
用 Go testing.B.SetBytes 为文件、编码或压缩类基准标记单次处理字节数,让结果同时显示 ns/op 与 MB/s,并解释输入规模、B/op 和并发基准的边界。190 收藏 -
用 Go testing.B.Run 把一次性样本准备与串行子基准测量分开,说明参数命名、计时边界、结果输出和 RunParallel 的注意事项。190 收藏 -
Go 的 httptest.ResponseRecorder.Flushed 只表示 Handler 是否调用过 Flush。本文用最小测试拆开未调用 Flush、断言过早、ResponseWriter 包装和真实网络缓冲的区别。477 收藏 -
Go 的 httptest.NewUnstartedServer 适合在启动 HTTPS 测试服务前修改 TLS 策略。本文说明 TLS、HTTP Server 配置与 StartTLS 的先后关系,并给出测试客户端和迁移检查清单。463 收藏 -
Golang · Go问答 | 11小时前 | net/http · HTTP客户端 · Go问答 · Go net/http gzip Transport.DisableCompression Accept-Encoding 响应解压
Go 的 Transport.DisableCompression 只控制是否自动添加 Accept-Encoding: gzip;自动请求的 gzip 响应会被透明解压,而用户显式请求 gzip 时仍需自己处理压缩 Body。318 收藏