Go教程技术文章
-
Go time.AfterFunc 返回的 Timer 可以用 Stop 取消尚未启动的回调。本文按 Stop 的 true、false 两种结果说明取消窗口与竞态边界,并给出需要等待回调结束时的显式同步写法。264 收藏 -
讲清 Go testing.T.Context 与 Cleanup 的取消时序,演示后台 goroutine 如何通过 done 和 errCh 退出,并在 Cleanup 中安全完成并发断言。262 收藏 -
Go gzip.Writer 的 Name、ModTime、Comment 等字段会写入 gzip 文件头,但必须在第一次 Write、Flush 或 Close 之前设置。本文给出最小写法,并说明复用 Writer、读回元数据和字段边界。262 收藏 -
Go encoding/gob 按字段名匹配结构体数据。本文说明旧 gob 数据解码到新增导出字段的结构体时为何通常仍然兼容、哪些类型变化会失败,以及如何设计结构体迁移测试。261 收藏 -
Go 1.23 引入的 unique.Handle 可以规范化重复的可比较配置值。本文用配置键示例说明 Make、Handle 比较、Value 取值和句柄回收边界。258 收藏 -
Go iter.Seq2 用 yield func(K, V) bool 表达键值对迭代器,消费者可用 for range 同时接收键和值,break 时安全通知生产者停止。258 收藏 -
Go pprof 的 heap profile 既能看当前仍占用的对象,也能看累计分配。本文从 inuse_space 与 inuse_objects 入手,结合 top、list、调用图和基线对比,定位长期保留对象并避开采样误判。257 收藏 -
Go testing/quick 的 Config 可以同时控制随机输入和检查次数:用 math/rand.New(rand.NewSource(seed)) 固定 Rand,用 MaxCount 限制迭代上限。本文说明两者的优先级、生命周期和失败定位边界。256 收藏 -
Go embed 子目录读取需区分编译匹配位置、原始文件系统根与子视图根,本文用原创示例说明 fs.Sub、目录枚举、路径前缀及缺失资源的排查方法。256 收藏 -
Go 的 json.Encoder 可以用 SetIndent 设置 prefix 和 indent,让后续 Encode 输出带层级缩进;本文说明最小写法、参数选择、关闭方式,以及它与 MarshalIndent 的区别。256 收藏 -
从真实 time.Sleep 迁移到 Go testing/synctest:用 bubble、虚拟时间和 Wait 稳定并发测试,并梳理网络 I/O 与资源清理边界。252 收藏 -
Go 使用 mime/multipart 流式接收文件时,失败路径要同时处理临时文件、文件句柄和提交边界。本文用临时文件加原子重命名的方案,说明怎样让复制、关闭和提交失败都及时清理。251 收藏 -
用 maps.EqualFunc 比较不同值类型的 Go map,讲清键类型约束、eq 回调、string 与 []byte 转换、缺键和性能边界。249 收藏 -
Go CookieJar 在本地 HTTP 测试中不发送 Secure Cookie,通常是 http scheme 不满足 Secure 属性。本文拆开保存、筛选与客户端注入职责,说明 HTTPS 测试和普通 HTTP 单测的选择边界。249 收藏 -
区分 Go 文件 Write、File.Sync 与 Close 的职责,掌握关键文件写入时的持久化和错误处理顺序。248 收藏