Go语言技术文章
-
Multistream(false) 只让 gzip.Reader 在首个成员后返回 EOF,并不会省略 trailer 校验。本文解释底层流越界读取的原因,并给出 bufio.Reader、io.ByteReader、Reset 与自定义尾部的可靠处理方式。277 收藏 -
Go ResponseController.SetWriteDeadline 可在单个 HTTP 处理器内控制响应写截止时间,适合流式响应和慢客户端保护。本文讲清最小写法、包装器兼容、错误处理及与其他超时的区别。277 收藏 -
context.WithValue 出现字段覆盖时,通常不是值被修改,而是相同键在父子 Context 中发生遮蔽。本文用包内私有键类型和类型安全访问器规避跨包冲突。277 收藏 -
从标签表达式、文件名后缀和 GOOS/GOARCH 三层筛选解释 Go 文件为何被排除,并用 go list 定位实际构建集合。277 收藏 -
Go 的 os.ReadDir 会一次性返回目录条目,大目录容易让内存峰值随规模增长。本文用 File.ReadDir 分批处理、按需读取元数据和排序边界说明一套可回滚的排障方案。277 收藏 -
Go 里两个 time.Time 看起来显示相同,直接用 == 仍可能比较出不同结果。本文从单调时钟、Location 和时间精度三个边界说明 Equal 与 == 的区别,并给出可验证的比较写法。276 收藏 -
slices.Clone 和 append 都能复制 Go 切片,但容量、底层数组别名和空切片行为并不完全相同。本文用可运行示例说明如何判断拷贝是否隔离,以及在并发和接口返回中该怎么选。276 收藏 -
Go 1.27 新增 bytes.CutLast,可按最后一个分隔符返回 before、after 和 found。文章对比 LastIndex 手写切片,说明缺失分隔符与共享底层数组的边界。276 收藏 -
Go vendor 模式下,不能只看 go.mod 猜依赖版本。本文用 vendor/modules.txt、go list -mod=vendor 和 go version -m 建立从源码目录到最终二进制的核对路径。276 收藏 -
Go fs.Sub 出错时,先区分路径格式错误和子目录访问错误:用 fs.ValidPath 检查 dir,再用 fs.Stat 确认目标存在且是目录,并通过 PathError 与 errors.Is 定位真正失败的操作。276 收藏 -
用 ctx.Err() 判断取消状态,用 context.Cause(ctx) 读取业务原因,掌握 WithCancelCause、WithTimeoutCause 以及父子 Context 的第一次取消规则。276 收藏 -
围绕 Go log/slog 中 nil 属性、空组和缺失键的差异,比较 TextHandler 与 JSONHandler 的输出,并给出 typed nil 和生产日志字段的排查方法。276 收藏 -
本文用完整 Go 实例演示如何规范化切片与映射、生成无歧义字符串键,并借助 unique.Handle 为不可比较结构建立稳定身份。276 收藏 -
Go slices.Chunk 会把分组切片的容量裁到长度,但各组仍引用原底层数组。本文说明何时直接消费、何时 slices.Clone,以及指针元素和 Collect 的内存边界。276 收藏 -
解释 Go defer 在循环中的函数边界,给出局部函数及时关闭文件的写法,并整理打开、读取、关闭和并发上限的排障清单。276 收藏