Go教程技术文章
-
Go database/sql 查询循环结束并不等于读取完整成功,本文从连接中断、Rows.Close 和事务提交三个现场拆开 Rows.Err 的检查边界,并给出可复现的代码与验收方法。102 收藏 -
Go text/template 默认可能忽略缺失 map 键。本文比较 missingkey 的三种策略,示范如何让必填键在 Execute 阶段直接返回错误,并处理可选字段。102 收藏 -
Go 1.27 改进 compress/flate 编码速度后,同一输入的压缩字节可能变化,gzip、zip、zlib 和 png 也可能出现派生差异。本文从 CI 快照失败入手,给出区分字节变化与数据损坏的检查方式,并把测试改成稳定的语义断言。101 收藏 -
Golang · Go教程 | 4小时前 | 单元测试 · 错误处理 · Go教程 · flag.FlagSet · Go命令行 · go bytes.Buffer Go flag.FlagSet Go SetOutput Go 捕获命令行错误 Go ContinueOnError
使用 Go flag.FlagSet 和 bytes.Buffer 捕获命令行解析错误,讲清 SetOutput、ContinueOnError、ErrHelp 与测试隔离的配合方式。101 收藏 -
一个全局 QPS 阈值只能挡住总流量,挡不住单个租户或重接口挤占资源。本文用 Go 的令牌桶限流器拆解全局、租户、接口三层配额的取舍、最小实现和观察指标。100 收藏 -
用 Go 泛型约束实现一个可复用的分组聚合函数,拆解 key 提取、map 累积、append 合并和结果校验,兼顾类型安全与调用体验。100 收藏 -
Go 测试需要共享临时目录、测试服务或客户端时,可以用 TestMain 统一初始化和清理。本文说明如何保存 m.Run 的退出码、区分夹具初始化失败与测试失败,并避开 os.Exit 跳过 defer 的清理陷阱。100 收藏 -
Go bufio.Scanner 读取超长行时,关键是在第一次 Scan 前调用 Buffer 设置初始缓冲区和最大 token 大小,并为换行符预留空间;如果行长不可控或需要恢复,则应改用 bufio.Reader。100 收藏 -
通过 net.Resolver 的 Dial 为单次 Go DNS 查询指定服务器 IP,配合 PreferGo、context 超时和 LookupHost 处理 UDP/TCP、取消及错误边界。100 收藏