Go教程技术文章
-
Golang · Go教程 | 21小时前 | 单元测试 · testing · Go教程 · 问题排查 · Go test 测试辅助函数 Go testing.T.Helper 失败位置 单元测试排错
testing.T.Helper 不会修复断言失败,它只让 Go 测试输出跳过辅助函数并指向调用处。本文从调用顺序、嵌套 helper、顶层测试函数和 goroutine 边界入手,给出排查失败位置仍指向 helper 文件的最小检查清单。244 收藏 -
Golang · Go教程 | 2星期前 | 并发 · pprof · 故障排查 · Go教程 · Go 1.27 · net/http/pprof goroutineleak goroutine 泄漏 runtime/pprof Go 1.27
Go 1.27 将 goroutineleak profile 正式带入 runtime/pprof 和 net/http/pprof。本文从一个被 channel 永久阻塞的最小案例出发,演示如何采样、判断可疑协程,并说明全局变量和可运行协程为什么会造成漏报边界。243 收藏 -
Go 的 url.ParseQuery 遇到非法百分号时不会只返回空结果:它仍会给出非 nil 的 Values,保留可解码的查询参数,同时返回首个解码错误。本文拆开这个边界,并给出严格拒绝与安全降级的选择方法。243 收藏 -
Golang · Go教程 | 3天前 | bufio · EOF · scanner · Go教程 · SplitFunc · 文本分词 · Go token bufio.Scanner SplitFunc atEOF ErrFinalToken
自定义 bufio.Scanner 的 SplitFunc 时,最后一个字段没有分隔符很容易被漏掉。本文用逗号分词示例说明 atEOF 与剩余 data 的关系,并给出连续分隔符、空 token 和 ErrFinalToken 的处理边界。243 收藏 -
reflect.StructOf 遇到重复字段名会直接 panic。本文从字段去重、参数边界、局部 recover 和表驱动测试四个方面,给出可诊断的动态结构构造方式。243 收藏 -
Go 中排查 unicode/utf8 非法序列时,先用 Valid 判断整体字节,再用 RuneError 与 size=1 定位具体偏移,并区分截断、错误编码和真实替换字符。243 收藏 -
Go 泛型函数的约束既要表达可接受的类型,也要让调用方看得懂。本文从类型集、接口方法和类型推断三个边界出发,拆解约束设计、编译验证与常见误区。242 收藏 -
time.Duration 本质是纳秒数量的 int64 别名。参与整数除法时结果会向零截断,先明确单位和余数,再决定是否转换为浮点或保留纳秒精度。242 收藏 -
sync.Pool 适合复用短生命周期对象,但不适合无上限地保留大缓冲区。本文用容量阈值、Put 前清理和堆画像检查,给出一套避免大对象长期留池的 Go 写法。242 收藏 -
Go 的 testing.T.Cleanup 会在当前测试及其子测试完成后调用清理函数,同一测试中多个回调按后注册先执行。本文用子测试示例说明 LIFO 顺序、资源依赖和并发注册边界。242 收藏 -
Go 泛型约束中的 ~ 不是装饰符,而是把底层类型纳入类型集的边界工具。本文从一个可复现的金额类型例子出发,区分精确类型、底层类型和接口约束,给出编译器核对方法与选型清单。241 收藏 -
用 Go 的 math/big.Int.FillBytes 把大整数写入固定长度的大端字节字段,理解绝对值、左侧补零和容量不足 panic 的边界,并给出可验证的协议字段校验写法。241 收藏 -
Go 的 os/exec 使用 StdoutPipe 或 StderrPipe 时,真正容易卡住的通常不是少写一个 Close,而是读取未完成就 Wait,或子进程继承了输出管道。本文给出无手工管道和并发读取两种写法,并整理取消、错误处理与 EOF 排查要点。241 收藏 -
讲清 Go slices.Delete 删除后 len、cap、尾部清零和底层数组持有之间的区别,并给出 Delete、Clip 与复制收缩的选择方法。241 收藏 -
Go 1.27.1 是小版本升级,但官方修复范围触及 cgo、编译器、runtime 和多个标准库。本文把这些范围映射成构建、运行与接口行为回归矩阵,帮助项目决定直接升级、灰度还是保留临时回退开关。240 收藏