Go语言技术文章
-
Go 测试需要临时文件时,t.TempDir 可以创建测试专属目录,并在测试及其子测试结束后自动清理。本文说明目录生命周期、多次调用、并行子测试和 GOTMPDIR 的使用边界。307 收藏 -
Go 表驱动测试调用 t.Parallel 后,闭包捕获的用例值和共享切片、map 可能互相污染。本文说明如何复制当前用例、隔离可变夹具,并用 go vet 与 -race 找到剩余风险。135 收藏 -
Go runtime.KeepAlive 的关键不是延长所有对象的生命周期,而是在系统调用返回前保持带有 finalizer 的外部资源对象可达。本文用文件描述符和底层调用示例说明放置位置、适用边界与排查清单。427 收藏 -
Go finalizer 遇到相互引用的对象环时,回收顺序无法建立,终结器也不保证执行。本文用显式 Close、断开反向引用和运行时诊断,把资源释放改成可控的工程路径。274 收藏 -
Go GOMAXPROCS 默认值会结合逻辑 CPU、亲和性与容器配额。本文说明 Go 1.25 起的策略、显式覆盖及自动更新边界,提供只读示例和恢复默认的配置取舍。439 收藏 -
Go sync.RWMutex.TryRLock 会立即尝试取得读锁,失败时直接返回 false,不会等待。本文说明它适合机会性读取和软降级的场景,以及失败分支、RUnlock 和关键数据一致性的边界。353 收藏 -
Go 1.25 的 sync.WaitGroup.Go 把任务登记和完成扣减绑定到一个函数边界,本文说明空组、嵌套任务、异常函数和 Add/Done 兼容场景的调用边界。326 收藏 -
sync.Pool 适合复用可丢弃的临时对象,但不保证对象长期留在池里。本文从 GC 周期、victim cache、Get/New 边界和实际代码说明对象为什么会消失,以及哪些场景不该依赖 Pool。486 收藏 -
Go slices.Values 提供按顺序产出元素值的迭代器。本文结合完整示例说明版本要求、break、重复遍历与共享切片边界,并给出普通 range 的回退取舍。323 收藏 -
Go iter.Seq2 用 yield func(K, V) bool 表达键值对迭代器,消费者可用 for range 同时接收键和值,break 时安全通知生产者停止。258 收藏 -
Go 1.23 引入 iter.Seq 后,可以把过滤逻辑封装成惰性迭代器。本文从 yield 控制出发,演示多个过滤条件如何组合,以及下游返回 false 时怎样让上游及时停止。268 收藏 -
Go maps.Copy 会把来源 map 的键值写入目标 map,同名键由来源覆盖。本文围绕默认配置、文件配置和环境覆盖说明调用顺序、nil 目标与嵌套 map 的浅层边界。162 收藏 -
Go bytes.FieldsSeq 在 Go 1.24 起返回 iter.Seq[[]byte],按 unicode.IsSpace 规则遍历字段,不先创建承载全部结果的二维切片;本文从旧接口迁移、空白边界、切片生命周期和提前停止四个方面给出可直接使用的写法。380 收藏 -
Go filepath.Rel 用基准路径和目标路径计算操作系统相关的相对路径。本文说明参数顺序、子目录与返回上级、相对输入和不同路径卷的错误边界,并给出可复用的封装。325 收藏 -
Go big.Rat 从字符串解析并保留精确计算值,用 RatString 无损保存、SetString 恢复;本文给出完整示例,说明格式限制、显示舍入与对象副本边界。105 收藏