Go语言技术文章
-
用 Go testing 的 ns/op、B/op、allocs/op 识别分配热点,再用 AllocsPerRun 把测量范围缩到一个明确的函数调用。177 收藏 -
表格驱动和并行子测试中,把资源创建、t.Cleanup 注册和释放范围放在同一个子测试作用域,可以覆盖失败、跳过与独立运行场景;本文说明父子清理顺序、后注册先执行和共享资源边界。317 收藏 -
Go 子测试调用 t.Parallel 后,循环变量、临时资源和进程级状态都可能造成互相影响。本文用一个表格驱动测试拆开共享来源,给出输入绑定、资源隔离、清理边界和复查命令。295 收藏 -
Go 的 testing.T.Setenv 可以在单个测试生命周期内设置环境变量,并在测试结束时自动恢复。本文说明最小写法、子测试继承、并行限制和可替代的依赖注入方案。280 收藏 -
Go 并发子测试中的诊断信息容易和其他分支混在一起。本文围绕 testing.T.Log、Logf、Name 与 t.Parallel,说明日志可见时机、上下文归属和常见边界。193 收藏 -
Go 的 fs.Sub 可以把一个 fs.FS 中的子目录挂载成新的文件系统。本文用 embed.FS 说明目录参数、相对路径、错误处理,以及如何把子 FS 接入 fs.ReadFile 和模板加载。486 收藏 -
Go 用 os.Rename 替换同目录普通文件时,应先把数据写入临时文件,再关闭并将临时路径改名为目标路径。本文说明实现方式、失败清理和跨平台边界。285 收藏 -
Go os.ReadDir 会返回按文件名排序的 fs.DirEntry 清单;本文说明 DirEntry 与 Info 的分工、部分读取错误,以及大目录使用 File.ReadDir(n) 的实现边界。388 收藏 -
Go 1.24 引入 os.OpenRoot 和 os.Root,用根目录句柄处理外部相对路径,避免 filepath.Join 形成的目录逃逸。本文拆解读写、子目录、错误处理和平台边界。184 收藏 -
用 Go 标准库 fs.FileInfoToDirEntry 把已有 FileInfo 适配为 DirEntry,说明 Name、IsDir、Type、Info 的映射关系,以及 nil 输入、类型断言和 Info 错误的处理边界。389 收藏 -
fs.ValidPath 判断的是 io/fs 名称语法,不是任意本机相对路径。通过路径元素示例和 Open 封装,区分根目录特例、业务命名、本地转换、文件存在性与实际访问错误。426 收藏 -
Go 按分钟对齐时间的最小写法是 t.Truncate(time.Minute)。本文说明它的绝对时间语义、返回值和时区边界,并比较 Truncate、Round 与 time.Date 的适用场景。486 收藏 -
本文用一个小型 Go 工具说明 time.Time.UnixMilli 如何生成毫秒时间戳,解释 UnixMilli 与 Unix 的单位区别、1970 年以前的负值、双向还原以及 JSON 和数据库边界的统一约定。252 收藏 -
Go 的 time.Ticker 退出时不能只停业务循环,还要明确 Stop、ticker.C 和消费协程的生命周期。本文用一个可复用的退出模式说明如何停止 ticker、等待 goroutine 并避免通道误用。132 收藏 -
Go 1.23 起使用 net.Dialer.KeepAliveConfig 明确设置 TCP 保活开关、空闲时间、探测间隔和未应答次数,并说明旧字段与平台差异。185 收藏