Go语言技术文章
-
slices.Grow 不是无条件提速开关。本文用批量追加日志事件的场景,拆开容量预估、底层数组复用、负数参数和基准验证,给出可以落地的使用边界。206 收藏 -
Go slog.HandlerOptions.AddSource 会让 TextHandler 或 JSONHandler 把日志调用点写入 source 字段,但它需要计算调用栈位置。本文用一个可运行示例说明 source 的来源、包装函数对定位的影响、性能成本与脱敏边界。235 收藏 -
用 Go log/slog 的 WithAttrs 固定请求上下文,理解属性快照、WithGroup 分组继承和重复键的输出边界,并用一个可运行示例核对结果。122 收藏 -
Go slog.Logger.With 会返回带属性的新 Logger,不会改写原 Logger。本文用并发请求和测试场景说明共享字段污染的成因、检查方法、隔离写法与验收边界。473 收藏 -
Go 1.24 新增的 testing.T.Context 会在测试函数结束、Cleanup 执行前取消上下文。本文用一个可复现的子协程收尾场景,讲清取消时机、Cleanup 顺序、超时边界和回归核对方法。454 收藏 -
以一个订单接口为例,拆开 Go 1.27 encoding/json/v2 的迁移步骤,核对字段标签、旧 JSON 兼容性、测试策略与可回滚边界。426 收藏 -
Golang · Go教程 | 1个月前 | 标准库 · JSON · go · 后端开发 · 版本迁移 · JSON Go 1.27 encoding/json/v2 encoding/json/jsontext GOEXPERIMENT
Go 1.27 带来 encoding/json/v2 与 encoding/json/jsontext。本文从旧 encoding/json 兼容边界开始,演示 v2 的选项配置、重复字段和非法 UTF-8 的回归检查,并给出灰度试用与 GOEXPERIMENT=nojsonv2 回退清单。195 收藏 -
用一个可复现的小例子拆开 strings.CutPrefix 与 HasPrefix 加切片的差别,重点核对 found 返回值、空前缀、相同前缀和 UTF-8 字符边界。338 收藏 -
Go 1.24 引入 os.OpenRoot 后,如何把用户传入的相对路径限制在指定目录内?本文用一个可运行的文件读取示例,验证正常打开、绝对路径和 .. 目录逃逸三类结果。182 收藏 -
Go 1.27 支持泛型方法,但类型参数写在接收者声明上,接口方法仍不能声明自己的类型参数。本文用一个可运行的小型数值容器,演示声明方式、调用边界、接口限制与 go test 验证。351 收藏 -
用 Go 的 io.SectionReader 读取文件片段时,EOF 到底代表成功还是数据不足?本文从偏移量、剩余长度和 ReadAt 行为入手,给出一段可复查的判断代码。342 收藏 -
Go 1.25 的 net/http 新增 CrossOriginProtection,本文从浏览器请求边界、Handler 接入、可信来源配置和 403 验收入手,拆解它适合解决什么问题以及哪些请求不能误放行。143 收藏 -
Go 的 os.File.ReadAt 不应只看 err。本文用固定长度读取场景拆解 n 与 err 的组合,说明完整读取、短读、负偏移和并发读取时该怎样判断与验证。491 收藏 -
围绕 Go 读取大文件时的内存峰值,拆解 os.ReadFile 的一次性分配、bufio.Reader 的流式边界、缓冲区大小选择和失败恢复检查。453 收藏 -
context.AfterFunc 的 stop 返回 false,不等于回调丢失;它表示回调可能已经启动,或此前已经停止。本文用连接读超时和资源清理场景拆解停止竞态、完成同步与幂等写法。486 收藏