Go问答技术文章
-
解释 Go Fuzz 失败输入为什么通常应保留到 testdata/fuzz,并区分真实实现缺陷、错误断言、非确定性、敏感数据和重复语料的不同处理方式。183 收藏 -
一次 Go 流式上传在异常路径卡死的排查记录:用 io.Pipe、CloseWithError 和 goroutine 栈定位背压与退出顺序问题,再补上可验证的清理和超时边界。182 收藏 -
http.Request.Clone 会深复制 URL、Header 等可复制字段,但 Body 仍是共享的 io.ReadCloser。本文按出站可重放、入站有界和大流式请求给出安全选择。182 收藏 -
ResponseController.Hijack 在 HTTP/2 下返回 ErrNotSupported,根因是 HTTP/2 ResponseWriter 不提供 Hijacker 能力。本文说明 Unwrap 查找链、协议差异、错误判断与降级方案。182 收藏 -
解释 Go 测试中 testing.TB.Cleanup 的执行时机,结合主测试、t.Run 子测试和并行测试,定位清理函数看似没有执行的常见原因。181 收藏 -
Go 的 net/http Cookie 同时设置 Expires 与 MaxAge 时,浏览器如何判断会话、持久化和删除?本文用 SetCookie 与 Request.Cookie 的最小例子拆开三个边界。181 收藏 -
go vet 的 printf 检查会对照格式动词与实参数量、类型。本文用 Go 示例解释 %d、%s 等格式为什么触发诊断,以及如何修正而不是用 %v 掩盖问题。181 收藏 -
slices.Clip 会把切片容量收紧到长度,适合在函数边界阻止下游 append 写入隐藏尾部,但它不复制元素,也不保证释放仍被引用的大底层数组。本文对比 Clip、三索引切片与复制方案。181 收藏 -
Go 的 http.CookieJar 没有一个叫 Clear 的公开方法。要清理过期 Cookie,通常让 jar 按 Expires 和 MaxAge 过滤,登出时再发送匹配域名与路径的删除 Cookie;如果问题仍然存在,就从目标 URL、Domain 和 Path 三个维度核对。181 收藏 -
讲清 Go encoding/gob 接口字段为什么要注册具体实现类型,并用收发示例说明值、指针、注册名和解码边界。181 收藏 -
Go 的 ZIP 压缩包可能只有文件条目而没有对应目录条目。本文用 archive/zip 说明如何按 FileHeader.Name 识别显式目录,从文件路径补齐隐式目录,并处理 File.Open 的资源关闭与路径安全边界。181 收藏 -
t.TempDir 的清理时机绑定调用它的 testing.T:父测试创建的目录会保留到所有子测试完成,子测试创建的目录只保留到该子测试树结束。本文结合并行子测试说明安全共享、隔离和清理顺序。181 收藏 -
io.Copy 返回的 written 和 err 如何判断传输是否完整?本文从写入中断现场出发,拆解 EOF、写入错误、短写入与大小核对的边界。180 收藏 -
Golang · Go问答 | 1个月前 | 字符串 · 标准库 · go · 接口设计 · Go strings.CutPrefix Go strings.CutSuffix 协议头 字符串裁剪 零值返回
strings.CutPrefix 和 CutSuffix 都返回裁剪后的字符串与 found 布尔值,但空前缀、未匹配和完整匹配的结果不同。本文用协议头解析场景说明如何组合两个函数,避免把未匹配误判为空字符串。180 收藏 -
Go 1.27 的 runtime/secret 用 Do 包住机密计算时,新建 goroutine 会继承 secret mode,但它不是万能的内存清理器。本文拆开 Enabled、堆对象可达性、全局变量、平台支持和 GOEXPERIMENT=runtimesecret 的边界,帮助你判断这项实验能力能否放进密码学代码。180 收藏