Go问答技术文章
-
Go testing.T.Attr 的键不能包含 Unicode 空白,值不能包含回车或换行;违规时会让测试失败并跳过该属性。本文解释约束来源、错误模型,以及如何把自由文本稳定映射为可记录的单行属性。255 收藏 -
Go net/http.Transport 资源没有释放时,先检查 Response.Body 是否关闭并区分活动连接与空闲连接,再用连接池参数和生命周期清理控制资源回收。424 收藏 -
io.OffsetWriter 把逻辑偏移映射到基准偏移之上,Seek 返回的是逻辑位置,Write 和 WriteAt 的坐标也不能混看。本文用分段写入场景拆解错位原因,并给出调用约定、边界处理与排查清单。194 收藏 -
Go 的 Cmd.Wait 不只等待主进程退出,还可能等待 stdout、stderr 的复制循环收尾。本文用 WaitDelay 拆解后代进程遗留管道导致的阻塞,演示如何设置等待上限并用 errors.Is 判断 ErrWaitDelay,同时说明阻塞 Writer 和进程树管理的边界。359 收藏 -
连续调用 slices.Delete 时不要继续照搬旧下标。本文用反向删除和区间合并两种方案处理索引偏移,并说明边界检查、排序与容量复用的注意点。126 收藏 -
os.MkdirTemp 不接受 perm 参数,而是按 0700 创建临时目录。本文解释这一安全边界、umask 影响、清理责任,以及多进程确需共享时的处理方式。472 收藏 -
Golang · Go问答 | 3小时前 | go · 垃圾回收 · 资源管理 · 运行时 · 排错 · Go 垃圾回收 资源清理 runtime.AddCleanup runtime.KeepAlive runtime.Cleanup.Stop
Go Cleanup.Stop 对已经因对象不可达而排队的清理函数不会生效。本文从取消窗口、对象可达性、KeepAlive 位置和闭包反向引用四个方面说明原因,并给出显式释放与兜底清理的配合写法。383 收藏 -
Go 1.22 起 archive/zip.Writer.AddFS 可以从 fs.FS 遍历目录并按原结构写入 ZIP。本文给出完整写法,说明 AddFS 与 Close 的错误处理,以及需要过滤文件或修改元数据时的取舍。208 收藏 -
HostLayout 约束的是 Go 结构体在当前主机上的内存布局,不是跨平台、跨进程或长期存储的字节协议。本文从一个布局误用场景拆解原因,并用 encoding/binary 演示如何显式指定字段宽度与字节序。393 收藏 -
os.Readlink 返回的是符号链接保存的目标文字。本文说明相对目标为什么要以链接所在目录为基准,如何处理绝对路径和错误边界,以及何时改用 filepath.EvalSymlinks。481 收藏 -
Go 升级后 encoding/json.Decoder 的结果或错误发生变化时,不要先修改业务逻辑。本文按工具链、实现、Decoder 配置、输入字节和目标类型五层建立最小复现矩阵,说明如何区分真实语义差异与错误文本变化。347 收藏 -
Go 拼接带有路径参数的 URL 时,直接把原始字符串放进 Path 容易让斜杠、空格或问号改变路径结构。本文说明 net/url.PathEscape 的正确边界,并对比 QueryEscape、url.URL.Path、RawPath 和重复转义问题。400 收藏 -
Go 的 net/mail.AddressParser.ParseList 可以把逗号分隔的邮箱地址解析为 []*mail.Address。本文说明普通地址、显示名、带引号逗号和解析错误的处理边界,并比较它与 Header.AddressList 的使用场景。241 收藏 -
Decoder 不负责关闭底层 Reader。通过文件与响应体的所有权、单文件函数和长期引用,区分句柄泄漏、缓冲保留与业务结果增长,并给出读取示例和指标比较方法。126 收藏 -
用 Go os.Root 和 Root.Open 把外部文件名限制在可信目录树内,说明 OpenFile、Root.FS、资源关闭与挂载边界。339 收藏