Go教程技术文章
-
Go 的 testing.T.Context 返回一个会在清理函数执行前取消的上下文。把它传给数据库、HTTP 或后台 goroutine,可以让测试超时和资源清理形成可观察的闭环。本文用一个可运行的测试示例说明取消链、Cleanup 顺序和失败定位边界。294 收藏 -
用一个泛型集合示例说明 Go iter.Seq 的 yield 回调约定、range 提前停止、go.mod 语言版本和 single-use 迭代器边界。294 收藏 -
Go 的 map 与 maps.Keys 都不保证遍历顺序。本文给出 slices.Sorted(maps.Keys(m)) 的最小写法,说明默认升序、自定义比较器、稳定输出键值对、空 map、并发与性能边界。294 收藏 -
Go SSE 推送的关键不是循环 Write,而是用 ResponseController.Flush 提交事件,用 ticker 心跳维持空闲连接,并通过 Request.Context 感知客户端断开后停止生产。294 收藏 -
Go os.OpenFile 配合 O_CREATE 和 O_EXCL,可以把文件不存在检查与创建合并成一次独占操作。本文说明先检查再创建的竞态、已存在错误的判断、写入收尾和不同文件创建策略的选择。294 收藏 -
Go 1.20 起可以用 context.WithCancelCause 保存具体取消原因,再用 context.Cause 读取;本文区分 ctx.Err 的通用状态与 Cause 的诊断信息,并说明父子 context 的首次取消和超时原因设计。294 收藏 -
用 Go json.Decoder 连续读取多个 JSON 值,掌握 Decode 循环、io.EOF、数组边界和尾部缓冲的生产处理方式。294 收藏 -
Go 1.27 默认将 runtime/pprof goroutine labels 纳入部分 traceback 输出,可用 GODEBUG=tracebacklabels=0 为单个进程关闭标签,并区分环境变量、go.mod 与 //go:debug 的配置边界。294 收藏 -
Go 的 multipart.Writer 默认使用随机边界。本文围绕 SetBoundary 讲清合法边界、调用时机、Content-Type 同步和 Close 收尾,给出可直接改造的上传请求示例。294 收藏 -
Go mod why 可以从主模块到目标包或模块给出最短导入路径。本文说明测试代码为什么会带入依赖,以及 -m、-vendor、go mod graph 怎样配合定位来源和版本关系。294 收藏 -
Go image/draw 的核心是让目标矩形 r.Min 与源点 sp 对齐。本文从目标画布、偏移坐标、Over 与 Src、非零边界和裁剪规则出发,给出可复用的偏移绘制方案。294 收藏 -
Go runtime/trace.Logf 适合把带分类和格式化参数的一次性消息写入执行追踪。本文说明 trace.Start/Stop 的生命周期、context 传递、Logf 与 Log 和 WithRegion 的边界,以及高频场景中的开销控制。294 收藏 -
用 archive/tar.Reader 顺序读取 tar 包时,目录项不应被当成文件内容处理。本文从 Reader.Next 的自动丢弃规则出发,给出跳过目录、限制目标路径、区分 io.EOF 与 ErrInsecurePath 的可验证写法。293 收藏 -
Go http.CookieJar 中 Cookie 已收到却无法发送时,按接收主机、Domain、HostOnly、公共后缀、IP 和目标 URL 逐层排查域匹配,快速区分主机 Cookie 与域 Cookie。293 收藏 -
Go strconv.AppendInt 可以把 int64 按指定进制直接追加到 []byte 日志缓冲区。本文说明返回值、base 参数、负数边界、容量复用和基准测试的正确用法,避免把追加结果丢失或把示意数据当成实测结论。293 收藏