Go教程技术文章
-
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教程 | 2星期前 | 单元测试 · 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 收藏 -
Go container/list 删除异常通常不是链表坏了,而是把 Value 当成 Element、节点来自另一条 List,或遍历时没有先保存 Next。本文按这三类现象给出排查和回归清单。493 收藏 -
Go container/list 读取链表节点的实用写法:从 Front、Back 开始,用 Next、Prev 遍历,通过 Value 和类型断言取出业务数据,并处理空链表与删除节点边界。317 收藏 -
Go container/heap 不会自动感知元素 priority 的变化。通过维护 Item.index,并在修改后调用 heap.Fix,可以让优先队列恢复正确顺序;删除和批量变更则分别使用 heap.Remove 与 heap.Init。452 收藏 -
Go container/heap 的堆顶不对,通常不是 Push 自己排序失败,而是 Less 方向、Init 时机、接口内部 Pop 或修改元素后未调用 Fix。本文按不变量和 API 职责给出排查与修复方法。221 收藏 -
Go 的 container/heap 读取分三种场景:只读堆顶、用 heap.Pop 消费原堆,以及复制堆后得到有序快照。本文用最小堆示例说明索引 0、Less 规则、空堆判断和指针元素的边界。308 收藏 -
掌握 Go sort.Search 的单调谓词、空切片与 len(data) 尾部返回值,正确处理升序、降序、重复值和插入位置。114 收藏 -
Go 的 sort.Search 不是直接判断相等,而是在 [0,n) 中寻找比较函数第一次返回 true 的位置。排查结果错误时,先检查谓词是否单调,再处理 n 返回值和精确命中判断。163 收藏 -
Go sort.Search 返回的是第一个满足条件的索引,不是目标值。本文用一个有序档位查找小项目,讲清索引读取、精确命中、插入位置与 n 的边界处理。145 收藏 -
Go 的 math/bits 不会自动改变变量类型,但可以测出数值需要的有效位数,帮助你在 uint8、uint16、uint32 和 uint64 之间安全选择并检查溢出边界。166 收藏