Go语言技术文章
-
Go 1.24 引入 os.Root,可把文件读写、创建和 fs.FS 访问限制在指定目录树内。本文用 OpenRoot、相对路径、Root.FS 和错误处理说明越界路径、符号链接、关闭责任及平台边界。278 收藏 -
Go 的 encoding/json.Number 代表 JSON 数字原文,Int64 只适合能表示为 int64 的整数文本。本文区分小数、指数形式、越界和格式错误,并给出 UseNumber 与可复用解析函数。278 收藏 -
sync/atomic.Pointer[T].Load 返回的指针不会因为一次原子替换就变成 C 语言意义上的悬空指针,但原子性也不会保护对象内部字段。本文用不可变快照拆开对象存活、指针槽位和字段并发访问三个边界。278 收藏 -
Go slog.Handler 可以在 Handle 中读取请求 context,并把 request_id 注入结构化日志。本文给出保留原 Handler 行为的包装器、HTTP 中间件接入方式和生产排查清单。278 收藏 -
从标签表达式、文件名后缀和 GOOS/GOARCH 三层筛选解释 Go 文件为何被排除,并用 go list 定位实际构建集合。277 收藏 -
Go 的 os.ReadDir 会一次性返回目录条目,大目录容易让内存峰值随规模增长。本文用 File.ReadDir 分批处理、按需读取元数据和排序边界说明一套可回滚的排障方案。277 收藏 -
Go x/text/cases 的 Caser 可能带状态,不能因为它是值类型就直接在 goroutine 间共享。本文说明 Lower、Upper、Title、Fold 的并发边界,以及 String、Bytes、Transform 的选择。277 收藏 -
Go 的 hash/crc32.ChecksumIEEE 会按 IEEE 多项式对传入的字节序列计算 32 位循环冗余校验。本文说明校验范围、分段读取、结果比较和算法兼容边界,帮助你避免把字段遗漏、结果格式或 CRC32 的用途理解错。277 收藏 -
对比Sonyflake整数、8字节编码与UUID的16字节及标准文本表示,给出Go往返转换函数,并说明数据库驱动、JSON数值精度和不同标识类型的接入边界。277 收藏 -
Go archive/tar 只负责读取 tar 条目,不会替应用限制解包路径和磁盘预算。本文用路径归一化、根目录边界检查、单文件上限与总量上限,搭出可迁移的安全解包骨架。277 收藏 -
filepath.Clean 只做词法规范化,不会把用户路径限制在某个目录,也不会处理符号链接越界和检查使用之间的竞态。本文对比 Clean、IsLocal、Rel 与 Go 1.24 的 os.Root,并给出文件服务的选择清单。277 收藏 -
讲清 Go http.DetectContentType 的前512字节取样边界、短文件处理、application/octet-stream 回退,以及上传文件取样后如何复位游标。277 收藏 -
go/types.Initializer 用 Lhs 保存被初始化的包级变量,用 Rhs 保存初始表达式。本文用多返回值初始化示例说明如何遍历 InitOrder、识别多个变量和判断初始化顺序。277 收藏 -
解释 Go defer 在循环中的函数边界,给出局部函数及时关闭文件的写法,并整理打开、读取、关闭和并发上限的排障清单。276 收藏 -
Go 的 io.CopyN 可以把流中的固定字节数复制到缓冲区,适合读取并保留协议头原始字节。本文说明 written 与 err 的成功判定、输入过短和底层错误处理,并比较它与 io.ReadFull 的边界。276 收藏