Go教程技术文章
-
go fix 会直接改写 Go 源码。本文从模块边界、包模式、构建配置、差异预览和 Git 检查点入手,整理一套可回滚的执行准备清单。421 收藏 -
go fix inline 不是普通编译器优化,而是依据 //go:fix inline 注释对兼容入口提出源码替换建议。本文用函数、常量、类型别名和测试文件四个场景说明识别条件,并给出安全预览与落盘方法。468 收藏 -
用 go fix modernizers 批量迁移旧标准库写法,先预览差异,再按 fixer、Go 版本和构建平台执行,并用测试确认语义边界。403 收藏 -
Go fuzzing 不可重复,通常不是随机输入本身的问题,而是 fuzz target 读了真实时间、共享状态或不可控外部依赖。本文用依赖接口、Fake 实现、固定种子和失败语料目录,整理出可重复运行的 Go 模糊测试结构。232 收藏 -
Go fuzzing 找到失败输入后,如何把大而难读的样本缩成稳定的回归语料?本文说明最小化参数、失败语料目录、生成语料缓存和修复后的 go test 回归流程。118 收藏 -
Go fuzzing 的种子语料既可以来自 f.Add,也可以来自 testdata/fuzz/FuzzTestName 目录。本文给出按 Fuzz 目标拆分目录、区分样本用途并纳入安全审计的组织方法。274 收藏 -
从真实 time.Sleep 迁移到 Go testing/synctest:用 bubble、虚拟时间和 Wait 稳定并发测试,并梳理网络 I/O 与资源清理边界。252 收藏 -
testing/synctest 判断 channel 是否阻塞,关键不在于看到某个 goroutine 停住,而在于它是否只能被同一 bubble 内的事件唤醒。本文从 channel 来源、synctest.Wait 到 nil channel 和外部 I/O,整理一套可操作的判断方法。182 收藏 -
testing/synctest 用 bubble 隔离 goroutine,并把 time 包切换到虚拟时钟。本文从超时测试出发,说明 Test、Wait、资源清理和外部 I/O 的边界。165 收藏 -
testing.B.Loop 解决了串行基准的计时和编译器优化陷阱,但并行基准仍要通过 RunParallel 与 PB.Next 分配工作。本文拆开两种语义,说明如何读取 ns/op、b.N、GOMAXPROCS 和 SetParallelism。122 收藏 -
解释 Go 1.24 的 testing.B.Loop 如何自动划定基准计时边界,把初始化和清理排除在循环体耗时之外,并对比传统 b.N 写法的迁移注意事项。273 收藏 -
Golang · Go教程 | 1星期前 | 单元测试 · Context · Go教程 · HTTP客户端 · Go 上下文取消 HTTP测试 testing.T.Context http.NewRequestWithContext
Go 1.24 起,testing.T.Context 能把测试生命周期直接传给 HTTP 客户端请求。本文给出最小代码、超时收紧、子测试边界,并解释它与 httptest.NewRequestWithContext 的区别。413 收藏 -
讲清 Go testing.T.Context 与 Cleanup 的取消时序,演示后台 goroutine 如何通过 done 和 errCh 退出,并在 Cleanup 中安全完成并发断言。262 收藏 -
Go 1.24 的 testing.T.Context 会在 Cleanup 回调执行前取消。本文用后台 worker 示例说明如何传递测试上下文、等待 goroutine 退出,以及父子测试、超时和清理阶段的生命周期边界。380 收藏 -
用 maps.EqualFunc 比较不同值类型的 Go map,讲清键类型约束、eq 回调、string 与 []byte 转换、缺键和性能边界。249 收藏