Go教程技术文章
-
Golang · Go教程 | 1个月前 | 错误处理 · Context · 并发控制 · Go教程 · 并发控制 Go教程 context取消 context.WithCancelCause context.Cause
context.WithCancelCause 适合在请求链路中保留明确取消原因,让子任务不只知道 context canceled,还能知道是权限拒绝、上游失败还是主动终止。落地时要区分系统取消和业务错误。342 收藏 -
time.After 放进长循环后,真正需要区分的是 Go 版本的回收语义、是否要提前取消,以及是否能复用计时器。本文用可运行示例拆开三种情况,给出 Stop、Reset 和上下文取消的安全边界。342 收藏 -
把 HTTP 请求耗时拆成处理、下游、序列化和写回阶段,定位 P99 主要来源。341 收藏 -
用 Go log/slog 的 WithGroup 组织嵌套字段,解释 Handler 链路、同名键边界与 JSON 输出检查方法。341 收藏 -
本文用一个完整 Go HTTP 服务示例,讲清楚如何在收到 SIGTERM 后先摘流,再等待请求完成,最后用超时上下文关闭服务,避免发布和重启时丢请求。340 收藏 -
Golang · Go教程 | 1个月前 | CI/CD · gitHub actions · Go教程 · 自托管 Runner · 持续集成 · Go 持续集成 CI Go test GitHub Actions self-hosted runner 自托管 runner
GitHub Actions 自托管 runner 开始恢复最低版本要求,Go 项目不要只盯着能不能跑 go test,而要盘点 runner 版本、镜像来源、负载分层和升级节奏,避免测试、构建、发布流水线在强制执行窗口里排队或失败。340 收藏 -
用 Go 的 multipart.Reader 逐段接收大文件,把请求体写入临时文件并在边界解析或磁盘失败时可靠清理,配套可运行的上传接口、大小限制与验收方法。340 收藏 -
Go 的 http.Request.Clone 会复制请求的大部分可变结构并替换 context,但 Body 仍是浅拷贝。本文用转发请求和超时取消两个场景,核对 Header、URL、Body 与 context 的安全边界。340 收藏 -
Go 1.26 的实验包 runtime/secret 用 secret.Do 包住处理敏感数据的调用链,清理寄存器和栈上的临时值,并在堆对象失去引用后交给垃圾回收清理。本文说明启用方式、返回值复制、panic 与平台限制。340 收藏 -
通过 goroutine profile、阻塞栈和请求路径定位泄漏来源。339 收藏 -
部署前想确认两份配置目录到底差在哪里,可以用 Go 标准库做一个只读快照工具。本文从 io/fs 和 filepath.WalkDir 出发,完成隐藏文件过滤、相对路径排序、SHA-256 摘要和 JSON 差异报告,并验证退出状态与异常边界。339 收藏 -
Go 1.27 让 go test 默认启用 stdversion 检查,用来发现代码使用了高于 go.mod 版本的标准库符号。本文从报错定位开始,说明 go.mod、构建标签和升级边界如何配合,并给出可复现的检查流程。339 收藏 -
Go 的 embed.FS 适合把默认配置随二进制一起发布,但路径写错、覆盖顺序不清和测试读错目录都很常见。本文从目录布局到运行时覆盖,给出可复用的最小实现、验证命令和回滚边界。339 收藏 -
CI 获取 Go 私有模块失败时,不要只把 GOPROXY 改成 direct。先看模块前缀是否命中 GOPRIVATE,再区分 GONOPROXY、GONOSUMDB、私有代理回退规则和非交互凭据问题。339 收藏 -
Go 1.27 调整 go tool trace -http 的默认监听行为。本文用一个小型诊断工具说明只写端口、显式写 localhost 和绑定远程地址的差异,并给出升级后可复查的监听边界清单。338 收藏