Go问答技术文章
-
Go net/http 的 Response.Uncompressed 为 true 时,表示 Transport 已把服务器返回的压缩响应透明解压。本文说明触发条件、字段变化、最小判断代码,以及如何用 DisableCompression 保留原始压缩响应。113 收藏 -
Golang · Go问答 | 4星期前 | 超时 · go · HTTP服务 · net/http · Go net/http ResponseController SetReadDeadline 请求体超时
Go HTTP 服务端要限制慢请求的读取时间,可以用 ResponseController.SetReadDeadline 设置整次请求读取的截止时间。它覆盖请求体读取,零值表示取消 deadline,已经过期后不能靠重新设置更晚时间延长;还要区分 ResponseWriter 不支持该能力与请求本身读取超时。112 收藏 -
io.MultiWriter 会按顺序把同一份数据写给多个 Writer;任一 Writer 返回错误就停止后续写入,短写则转换为 io.ErrShortWrite。本文说明部分成功、失败传播与补偿设计的边界。112 收藏 -
Go 的 encoding/json 会把 nil slice 编码成 null,把初始化但长度为 0 的空 slice 编码成 []。本文用最小示例、omitempty 和 API 返回策略说明如何判断与统一这种空值语义。112 收藏 -
Go httptest 默认使用系统选择的回环端口;出现端口被占用时,重点检查是否通过 -httptest.serve 或自定义 Listener 固定了地址,以及测试结束是否调用 Close。111 收藏 -
Go JSON 出现重复字段时,map、struct 和嵌套对象可能得到不同结果。本文按 encoding/json v1 的处理顺序说明覆盖与合并,并补充 encoding/json/v2 的严格差异和排查清单。111 收藏 -
http.ParseCookie 返回 Cookie 列表,重复名称不会自动合并。用 map[string][]string 追加同名值,同时保留原列表顺序,并说明多条请求头、空值、解析错误及业务选择规则。111 收藏 -
textproto.MIMEHeader.Values 会返回指定键关联的全部值,适合处理重复邮件头;Get 只取首值。本文用原创 Go 示例说明大小写键、缺失字段、nil map 与返回切片可变等边界。111 收藏 -
Go 跨站请求没有带上 Cookie,通常要同时检查 http.Cookie 的 SameSite、Secure、Domain、Path,前端 credentials 和 CORS。本文按响应头、浏览器请求、Go 读取三层给出排查顺序。111 收藏 -
url.PathEscape 处理的是一个 URL 路径段,斜杠会被编码为 %2F。本文解释 URL.Path、RawPath、EscapedPath 的区别,给出避免二次解码、按段拼接和批量减少临时字符串的 Go 写法。111 收藏 -
Go zlib 解压出现校验和错误时,需要区分尾部不匹配、输入截断和关闭错误。本文用受控小样本演示完整读取、保留错误链与失败正文隔离,并说明压缩器关闭和底层资源的处理责任。110 收藏 -
Go TLS 排障中,PeerCertificates 表示对端发送的证书列表,VerifiedChains 表示本地构造出的验证链。本文说明如何结合握手状态、客户端与服务端角色判断证书链,避免只凭证书数量下结论。110 收藏 -
zip.Writer.Close 不只是关闭一个对象,它还要结束当前条目、补写中央目录和结束记录,并刷新内部缓冲,因此部分写入错误会在最后才返回。本文拆开这些职责,说明为什么必须同时检查 Create、Write 和 Close。110 收藏 -
Go x/text/encoding/unicode 的 UseBOM 会在 UTF-16 输入带起始 BOM 时覆盖默认字节序,无 BOM 时再回退到默认值。本文用示例区分 UseBOM、ExpectBOM 和 IgnoreBOM。110 收藏 -
go.starlark.net/starlark 的 Thread 局部数据属于 Go 侧线程状态,脚本全局变量属于 Starlark 模块环境。本文用一个宿主回调示例拆开两者的可见范围、初始化时机和并发隔离边界。110 收藏