Go语言技术文章
-
用 Go testing.T.Cleanup 管理测试资源时,结合 t.Helper 隐藏辅助函数栈帧,让清理失败更接近真实测试调用方;本文说明生命周期、逆序执行、子测试边界和排查清单。356 收藏 -
Go reflect 中 ConvertibleTo、AssignableTo、CanConvert、CanSet 与接口断言职责不同。本文用命名类型、接口字段和动态值示例说明转换、赋值与断言的边界,帮助反射代码减少 panic。206 收藏 -
用 Go testing.T Cleanup 分层管理共享 fixture 与子测试资源,配合 T.Run 的等待边界协调 Parallel 测试,避免清理过早和闭包串数据。444 收藏 -
Go reflect 中 CanAddr 与 CanSet 不是一回事。本文用 ValueOf、Elem、结构体字段、切片元素和 map 索引拆解 Set panic,并给出可复查的安全写入方法。136 收藏 -
围绕 Go testing.T Cleanup 讲清后注册先执行的规则,示范如何按资源依赖登记清理函数、隔离子测试资源并处理清理错误。343 收藏 -
用 Go reflect 读取结构体字段标签时,先统一处理指针与结构体类型,再结合 StructField.Tag 的 Get 或 Lookup 读取标签,并正确拆分 json 等逗号选项。186 收藏 -
用 Go hash.Hash 和固定缓冲区流式计算文件摘要,覆盖部分读取、EOF、真实 I/O 错误、资源关闭与摘要输出边界。482 收藏 -
通过 Number 约束和 []T 值参数,让 Go 泛型调用从 Sum[Cents](amounts) 简化为 Sum(amounts),并说明不能推断时应保留显式类型参数的边界。370 收藏 -
用 Go 的 hash.Hash 和 io.MultiWriter 把同一份字节分发给多个独立摘要实例,讲清 Sum 参数、结果命名、Reset 复用和摘要长度边界。223 收藏 -
Go 泛型切片算法不必一开始就抽象成复杂接口。本文从算法实际操作出发,讲清 []E 与 ~[]E 的选择、元素约束拆分、类型推断和命名切片边界。230 收藏 -
讲清 Go hash.Hash 复用时 Reset、Write、Sum 的状态边界,用一个串行摘要计算器避免上一条输入串入下一条结果。147 收藏 -
用 K comparable 和数值联合约束抽象 Go 求和逻辑,保留整数、浮点数及自定义数值类型的返回类型,并说明 ~、类型推断与边界。157 收藏 -
从不可预测性与可复现性出发,区分 Go crypto/rand 的安全随机源和 math/rand/v2 的伪随机种子,给出安全字节、测试重放与代码评审的边界清单。290 收藏 -
用 Go 1.23 的 maps.DeleteFunc 批量清空 map,理解保留容器、别名可见性、nil map、容量与并发访问之间的边界。345 收藏 -
讲清 Go crypto/rand.Int 的 [0,max) 参数边界,给出闭区间换算、big.Int 写法、随机源选择和错误处理清单。382 收藏