Go教程技术文章
-
通过一个可控的流复制小项目说明 io.TeeReader 的同步写入语义、写端错误如何从 Read 返回,以及处理 n 和 err、错误包装与适用边界的正确方式。210 收藏 -
用共享有界 Writer 限制 Cmd 的 stdout 与 stderr 保存总量,超限时取消并回收进程。本文说明固定前缀、管道消费、WaitDelay及进程树边界。210 收藏 -
Go 的 crypto/rand.Read 保证填满目标切片且不把随机源错误作为普通返回值;需要观察短读、EOF 或可替换 Reader 时,应使用 io.ReadFull,检查 n 与 err,并丢弃不完整随机字节。209 收藏 -
用 Go hash/fnv 把稳定字符串映射为分片编号,讲清 FNV-1a、UTF-8 字节、32/64 位选择、取模边界与扩容迁移风险。209 收藏 -
Go 判断 IP 是否为回环地址时,优先把文本解析为 netip.Addr,再调用 IsLoopback。本文区分 IPv4、IPv6、映射地址、未指定地址和零值 Addr 的边界。209 收藏 -
Go 的 go tool covdata merge 可以把多个 GOCOVERDIR 目录中的原生覆盖率数据合并到一个输出目录。本文说明输入目录、-i/-o 参数、合并后报告生成,以及元数据不一致时的排查边界。209 收藏 -
Go runtime/debug.SetMaxThreads 设置的是操作系统线程总量上限,不是 goroutine 数量或 GOMAXPROCS。本文说明如何在启动阶段设置并保留旧值,解释 cgo、阻塞系统调用与 LockOSThread 对线程创建的影响,并给出上线前的容量边界。209 收藏 -
介绍 Go os/exec 中 Env 为 nil、继承后追加变量和白名单隔离三种写法,说明重复键、PATH、shell 与跨平台边界。209 收藏 -
Golang · Go教程 | 2天前 | 标准库 · 压缩 · Go教程 · reset compress/gzip io.ByteReader Reader.Multistream gzip 多成员
Go 的 gzip.Reader 默认会把串联的 gzip 成员当成一个连续解压流;如果协议要求逐个处理成员,应调用 Multistream(false),让底层 Reader 提供 io.ByteReader,并用 Reset 判断后续成员。本文解释默认模式、单成员模式、EOF、校验和关闭语义。209 收藏 -
围绕 Go database/sql 事务的开启、错误回滚、Rows 清理与 Commit 未知状态,整理一份可直接用于代码审查和上线前检查的清理清单。209 收藏 -
Go 项目把模板放进 embed.FS 后,不能继续按操作系统文件路径理解它。本文用 text/template.ParseFS 读取嵌入文件,说明 glob 模式、模板名称、ExecuteTemplate 和常见错误之间的关系。208 收藏 -
本文围绕 Go hash/maphash Seed 说明初始化、独立使用、多个 Hash 复用、并发边界与进程生命周期,帮助读者避开零 Seed、跨进程持久化和密码学误用。208 收藏 -
用 github.com/evanphx/json-patch/v5 的 MergeMergePatches 合并两份 JSON Merge Patch,并说明补丁顺序、null 删除、嵌套对象和数组整体替换的边界。208 收藏 -
Go 使用 go-i18n 做本地化时,可以把数量放进 LocalizeConfig.PluralCount,让 Localizer 按语言规则选择 One、Other 等复数模板;本文说明 Message、TemplateData 与迁移回归边界。208 收藏 -
Go embed.FS 读取模板时,问题通常不在模板语法,而在嵌入模式和 FS 内部路径没有对齐。本文从目录映射、ReadDir/ReadFile 到 template.ParseFS,说明如何避免结果为空或路径不符合预期。208 收藏