Go问答技术文章
-
解释 Go Fuzz 失败输入为什么通常应保留到 testdata/fuzz,并区分真实实现缺陷、错误断言、非确定性、敏感数据和重复语料的不同处理方式。183 收藏 -
http.Request.Clone 会深复制 URL、Header 等可复制字段,但 Body 仍是共享的 io.ReadCloser。本文按出站可重放、入站有界和大流式请求给出安全选择。182 收藏 -
ResponseController.Hijack 在 HTTP/2 下返回 ErrNotSupported,根因是 HTTP/2 ResponseWriter 不提供 Hijacker 能力。本文说明 Unwrap 查找链、协议差异、错误判断与降级方案。182 收藏 -
t.TempDir 的清理时机绑定调用它的 testing.T:父测试创建的目录会保留到所有子测试完成,子测试创建的目录只保留到该子测试树结束。本文结合并行子测试说明安全共享、隔离和清理顺序。181 收藏 -
Go constant.Value.ExactString 输出 1/10 并不是精度丢失,而是 go/constant 保留了小数常量的精确有理数表示。本文区分 String、ExactString、big.Rat 和 float64 的职责,说明如何选择正确的展示方式。180 收藏 -
Go 客户端提示证书主机名不匹配时,证书可能仍在有效期内且签发链可信。本文拆解实际校验名、DNS/IP SAN、Common Name、通配符、SNI 与代理选证书,并给出安全诊断程序和固定 IP 拨号的正确配置。180 收藏 -
omitzero 只按 Go 零值或 IsZero 返回值省略字段。本文从标签逗号、nil 与空容器、自定义零值和 Marshal 方向定位未生效原因。180 收藏 -
Go json/v2 迁移的难点不在替换 import,而在字段名匹配、omitempty、nil 集合和未知成员等行为差异。用清单和 DefaultOptionsV1 可以分阶段切换。179 收藏 -
Go 的 http.Response.Body 是流式网络资源,调用方必须关闭。对 HTTP/1.x 而言,读到 EOF 再关闭更有利于连接复用;但大响应应有限排空或直接终止,不能为了复用盲目读取。179 收藏 -
Go bufio.Scanner 的 Buffer 参数同时涉及初始缓冲区和 token 最大上限。本文用长行读取示例说明如何按数据分布设置 max,如何处理 token too long,以及什么时候应该改用 bufio.Reader。178 收藏 -
EnableFullDuplex 主要改变 Go HTTP/1 服务端的请求体消费时机,HTTP/2 默认已经支持读写并行。本文用协议边界、包装器错误和完整示例说明正确用法。177 收藏 -
Go 1.27 支持具体类型的泛型方法,但泛型方法仍不能直接满足普通接口方法。本文从方法签名、方法集、接收者和约束位置排查,并给出泛型类型、顶层函数与适配器三种修复方案。177 收藏 -
解释 Go io.SectionReader.Size 为什么固定返回 section 长度,并区分它与 Read、Seek 改变的当前偏移,给出顺序读取、随机读取和边界判断的实用写法。176 收藏 -
Go html/template 会按 HTML、URL 和 JavaScript 上下文自动转义,动态属性出现 #ZgotmplZ 往往是安全保护而非模板损坏。本文用最小示例说明如何定位上下文、改用数据驱动和控制可信类型边界。176 收藏 -
本文解释 cgo 回调为什么需要用 //export 生成 C ABI 可见入口,并给出 C 桥接层注册回调、runtime/cgo.Handle 传递上下文的完整边界。175 收藏