Go教程技术文章
-
Go 1.24 的 time.Time.AppendText 可以把 RFC 3339 时间直接追加到复用的 []byte。本文说明如何在循环和写入路径中复用缓冲区、处理错误与字符串转换,并用 benchmark 判断分配是否真正下降。264 收藏 -
Go time.AfterFunc 返回的 Timer 可以用 Stop 取消尚未启动的回调。本文按 Stop 的 true、false 两种结果说明取消窗口与竞态边界,并给出需要等待回调结束时的显式同步写法。264 收藏 -
Go Context 适合携带 trace ID、请求来源等请求级元数据,不适合隐藏订单号、分页条件等业务参数。本文用类型安全的 WithValue 写法、显式 API 参数和取消传播示例说明边界。263 收藏 -
Go 重试机制最难的不是退避算法,而是稳定地区分可重试错误与永久错误。本文用 errors.Is、errors.As、%w、领域错误类型、context 与幂等约束,给出可维护的分类器和重试边界。263 收藏 -
讲清 Go testing.T.Context 与 Cleanup 的取消时序,演示后台 goroutine 如何通过 done 和 errCh 退出,并在 Cleanup 中安全完成并发断言。262 收藏 -
Go gzip.Writer 的 Name、ModTime、Comment 等字段会写入 gzip 文件头,但必须在第一次 Write、Flush 或 Close 之前设置。本文给出最小写法,并说明复用 Writer、读回元数据和字段边界。262 收藏 -
用 go test -cover 建立按包基线,再用 coverprofile 与 go tool cover 定位函数盲区,并区分默认包内统计和 -coverpkg 跨包统计。262 收藏 -
Go encoding/gob 按字段名匹配结构体数据。本文说明旧 gob 数据解码到新增导出字段的结构体时为何通常仍然兼容、哪些类型变化会失败,以及如何设计结构体迁移测试。261 收藏 -
讲清 Go httptest.NewRequest 如何构造请求体、设置 ContentLength,并用 Handler 回归测试覆盖已知长度、未知长度和空请求体边界。260 收藏 -
Go 中的自然日应按目标时区的日历边界计算:先把锚点时刻转换到 Location,构造当地零点,再用 AddDate 得到下一日零点。本文解释为什么不能固定加 24 小时,并给出半开区间、UTC 查询与夏令时测试写法。260 收藏 -
用 Go strconv.ParseInt 按进制和位宽检查字符串整数,区分 ErrSyntax 与 ErrRange,再安全转换为 int32、int64 等业务类型。259 收藏 -
本文说明 Go encoding/base32 的 CorruptInputError 如何表示首个非法输入字节偏移,并用 errors.As、UTF-8 位置换算、上下文切片和 padding 配置完成可读诊断。259 收藏 -
用 Go modules replace 在不改 import 路径的前提下临时指向本地模块,说明 require、go.mod、go list -m -json 与提交前清理之间的排查关系。258 收藏 -
Go 1.23 引入的 unique.Handle 可以规范化重复的可比较配置值。本文用配置键示例说明 Make、Handle 比较、Value 取值和句柄回收边界。258 收藏 -
Go iter.Seq2 用 yield func(K, V) bool 表达键值对迭代器,消费者可用 for range 同时接收键和值,break 时安全通知生产者停止。258 收藏