Go语言技术文章
-
Go archive/zip.Reader.Open 读取嵌套目录时,路径要使用 ZIP 内部的斜杠分隔名;本文用完整示例说明目录判断、资源关闭和常见错误排查。120 收藏 -
Go ResponseWriter 的普通 Header 要在 WriteHeader 或 Write 之前设置;一旦响应头提交,后续修改通常不会生效。本文说明提交时点、分支写法和 Trailer 边界。170 收藏 -
Go 导出 CSV 时,Writer.UseCRLF 决定记录行尾是否使用回车加换行。本文从表格软件兼容、字段引用、Flush 与字节检查几个环节说明如何稳定落地。221 收藏 -
Go HTTP 服务端选择 ReadHeaderTimeout 还是 ReadTimeout,关键看是否要限制请求体的整体读取时间。本文按请求阶段、接口类型和回归场景拆开比较,并给出从整请求超时迁移到分层配置的清单。120 收藏 -
解释 Go encoding/xml Decoder.Strict=false 对缺失结束标签、异常实体和命名空间的实际影响,并说明 AutoClose、Entity 的配置边界与生产选择。447 收藏 -
Golang · Go问答 | 4星期前 | 连接池 · 性能排查 · HTTP客户端 · Go问答 · Go net/http Transport HTTP连接复用 DisableKeepAlives TCP keepalive
Go 的 Transport.DisableKeepAlives 控制 HTTP keep-alive 与连接复用,不等于 TCP keepalive。本文用请求序列、连接池边界和可观察代码说明关闭后的影响,以及适合关闭和保持默认值的场景。115 收藏 -
用 Go encoding/json 的 json.RawMessage 先读取联合字段判别值,再将 payload 延迟解析到具体结构体,并区分未知类型、null、格式错误和字段类型错误。369 收藏 -
http.Client.Timeout 限制的是一次请求从连接到读取响应体的总时长,不会替调用方管理 Response.Body。本文区分 Close、读到 EOF、连接复用和慢流场景,给出可直接套用的清理写法。352 收藏 -
Go 的 DisallowUnknownFields 适合封闭、可控的 JSON 写接口,用来尽早发现拼写错误;面对第三方 webhook 和可扩展 payload 时应谨慎开启。125 收藏 -
Go HTTP 请求取消后,Transport 如何处理连接、请求体、响应体和错误?本文按 RoundTrip 的实际边界解释 context.Canceled、超时与连接复用。150 收藏 -
Decoder.InputOffset 记录的是解码器当前位置,不一定就是坏字段。处理 JSON 解析失败时,先读取 SyntaxError.Offset,再用 InputOffset 和附近字节片段缩小排查范围。201 收藏 -
time.Now 返回的时间可能同时包含墙上时钟和单调时钟,但 time.Time.Round 是墙上时间计算,会从结果中剥离单调读数。本文按比较、耗时、序列化和 map key 场景说明怎么判断与修复。397 收藏 -
Go 使用 bufio.Writer 写文件时,Flush 成功并不等于关闭顺序正确。本文用最小示例拆开 Write、Flush、Close 三个阶段,定位空文件、defer 逆序和错误被覆盖等常见问题。435 收藏 -
time.AfterFunc 的 Timer.Reset 返回 false,只说明旧定时器已经到期或停止,不代表旧回调已经结束。本文用 started/finished 信号说明如何判断旧回调状态,并避免新旧回调并发访问共享数据。297 收藏 -
Go 的 bufio.Reader.Peek 只观察并不推进读取位置。本文用固定协议头示例说明如何先判断、再精确消费,处理 ErrBufferFull、短输入和预览切片生命周期,避免头部丢失或重复读取。367 收藏