Go语言技术文章
-
Go 的 -bench 参数支持按基准名称层级筛选。本文用 Benchmark 子基准示例说明正则匹配、父基准探测、精确到末级和团队脚本化运行的边界。220 收藏 -
Go 模糊测试发现失败输入后,不要把 crash artifact 当作临时文件删除。本文以 FuzzParse 为例,说明如何定位 testdata/fuzz 语料、用 -run 精确复现,并让修复后的失败输入长期成为默认回归测试。339 收藏 -
Go Fuzz 的种子语料可以分成代码里的 f.Add 样本和 testdata/fuzz/FuzzTestName 目录语料。本文用一个可迁移的 FuzzDecode 示例说明两种来源怎样配合、目录文件怎样命名、参数类型怎样对齐,以及失败样本如何沉淀为回归用例。265 收藏 -
Go t.Run 子测试采用唯一语义标识,可让 CI 重跑命令保持稳定。本文比较命名方式,给出分组代码与分段正则,解释重复名、斜杠和父测试执行的边界。497 收藏 -
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 收藏