Go教程技术文章
-
Go 中 bufio.Writer.Write 成功并不代表底层资源已经写入,Flush 才会把缓冲内容交给文件、网络或自定义 io.Writer。本文说明 Flush 报错的原因、Write 与 Flush 的边界,以及文件、重试和 Sync 的处理清单。367 收藏 -
bufio.Reader.ReadString 读不到分隔符时,可能返回已经读到的字符串和 io.EOF。本文用返回值边界、最后一段处理和读取循环说明如何避免丢数据、误报错误与死循环。470 收藏 -
通过 go mod why 的包级、模块级和 -vendor 查询,理解依赖路径范围,避免把解释命令误当成清理或版本选择命令。420 收藏 -
围绕 go mod why 常见报错,区分包路径与模块路径,确认主模块位置,并结合 go list、go mod graph 和 replace 配置定位依赖引入原因。370 收藏 -
用 go mod why 按包或模块读取从主模块到目标依赖的最短导入路径,理解 -m、-vendor、未引用提示与 go mod graph 的边界。103 收藏 -
用明确的 Go 包路径配合 go test -race,只检查目标包的竞态测试;同时区分 -run、./...、依赖编译和 -count=1 的作用边界。349 收藏 -
go test -race 出错时,先确认是运行时竞态、普通测试失败还是平台不支持,再沿着 Read by、Previous write 和 goroutine 创建栈定位共享状态,修复后用 -count=1 复查。343 收藏 -
go test -race 不负责提供共享变量读取接口,而是报告并发读写之间缺少同步的路径。本文用最小示例说明如何定位 Read/Write 栈,并选择互斥锁或原子读取修复。414 收藏 -
Go testing.T.Cleanup 的关键不是把回调写在哪里,而是看它注册到哪个测试作用域以及登记顺序。本文解释同一 T 上的 LIFO 规则、父子测试边界、资源依赖登记方式和并发注册的排查方法。498 收藏 -
Go testing.T.Cleanup 回调 panic 不会被静默忽略。本文说明清理时机、后进先出顺序、测试主体 panic 与 cleanup panic 的区别,并给出用 t.Errorf、局部 recover 和 go test 排查重复清理与并发边界的写法。239 收藏 -
testing.T.Cleanup 会在当前测试及其子测试完成后执行,多个回调按后注册先执行。本文用 t.Run、t.Name 和事件记录说明父子测试清理归属、注册顺序、并行子测试边界及常见误区。478 收藏 -
Go testing.T.Helper 只改变测试失败日志的调用层级,不改变断言结果或控制流。本文用多层断言和子测试示例说明应该在哪里标记,以及常见误区。192 收藏 -
Golang · Go教程 | 1星期前 | 单元测试 · testing · Go教程 · 问题排查 · Go test 测试辅助函数 Go testing.T.Helper 失败位置 单元测试排错
testing.T.Helper 不会修复断言失败,它只让 Go 测试输出跳过辅助函数并指向调用处。本文从调用顺序、嵌套 helper、顶层测试函数和 goroutine 边界入手,给出排查失败位置仍指向 helper 文件的最小检查清单。244 收藏 -
Go 的 testing.T.Helper 没有返回值,它用于标记测试辅助函数,让失败日志跳过辅助层并更接近真正的测试调用位置。本文用原创示例说明调用位置、失败报告、并发边界和核对方法。348 收藏 -
通过一个带节点句柄的任务队列,说明 Go container/list 中 Element 的归属、插入、移动、移除和常见生命周期边界。375 收藏