Go问答技术文章
-
Go workspace 中,go.work 的 go 与 toolchain 指令负责 workspace 启动时的工具链要求;每个 go.mod 的 go 指令仍决定对应模块的最低版本和语言语义。go.work 的版本不能低于任何 use 模块。230 收藏 -
Go 1.26 默认启用 Green Tea GC,但 nogreenteagc 是构建时退出开关。本文说明为什么启动旧二进制时临时设置环境变量无效,并给出重建、留痕、灰度和回滚清单。290 收藏 -
Go 1.21 以后 toolchain 会依据 go.mod、go.work 和 GOTOOLCHAIN 选择版本。本文说明离线环境如何区分自动下载、PATH 预装和版本要求,并给出不触发网络下载的配置与验证清单。223 收藏 -
go.mod 的 toolchain 只建议使用更高的首选工具链,不会把更新的本机 Go 降级。本文按 go.work、GOTOOLCHAIN、版本名称与下载条件排查未切换原因,并给出可复用的诊断命令。118 收藏 -
Golang · Go问答 | 2天前 | Context · 并发编程 · go语言 · 错误排查 · Go并发 context.AfterFunc sync.OnceFunc Stop竞争 重复清理
context.AfterFunc 返回的 Stop 只能阻止尚未开始的回调,不能等待已启动回调结束。本文用共享 OnceFunc 清理入口与 done 完成信号处理 Stop 和取消同时发生的竞争,并说明调用所有权、阻塞与独立清理 Context 的边界。463 收藏 -
Golang · Go问答 | 2天前 | 标准库 · Context · 并发编程 · go语言 · 错误排查 · 后台任务 Deadline context取消 context.WithoutCancel Go排查
context.WithoutCancel 本身不会返回 Deadline,但后台任务仍可能从新派生的 WithTimeout 或误用的原始请求 Context 获得时间边界。本文用最小探针定位来源,并给出保留上下文值、脱离请求取消且仍可回收的写法。374 收藏 -
Golang · Go问答 | 2天前 | 错误处理 · Context · 并发编程 · go语言 · Go context context.Cause 取消原因 WithCancelCause CancelCauseFunc
context.Cause 返回父级原因,是因为父级取消会向子级传播,而子级或任一父级的首次取消会固定该子级的 cause。本文用两种取消顺序说明 Err、Cause、超时和 WithoutCancel 的边界。102 收藏 -
对比 Go FlightRecorder 与 trace.Start 持续 execution trace 的触发时机、数据范围和资源边界,并用可切换小项目给出选型方法。358 收藏 -
Go flight recorder 导出的时间线不完整,常见原因是移动窗口已淘汰早期事件、记录器启动或快照触发过晚、MaxBytes 覆盖 MinAge、只采到单个进程,或把真实阻塞误认成数据缺失。本文给出逐项判断与修正方法。253 收藏 -
Go flight recorder 的缓冲区太小时不会按事件类型选择性丢弃,而会淘汰较老的完整 trace generation。本文解释 MaxBytes 与 MinAge 的优先级、会缺失的上下文及容量配置方法。354 收藏 -
Go 容器中的 SystemCertPool 为空或加载失败时,按根证书文件、SSL_CERT 路径、镜像依赖和私有 CA 四层定位并修复。233 收藏 -
Go 1.24 为 crypto/x509 增加证书策略验证后,证书链能建立并不代表满足指定策略 OID。本文从版本、Policies 字段、CertificatePolicies、策略图和中间证书集合五个方面定位失败原因。329 收藏 -
Go 的 x509 Verify 即使已加载根证书,也可能因 PEM 未解析、使用了不同 Roots、缺失中间证书或 CA 约束不成立而返回 unknown authority。本文用加载布尔值、签名关系和返回链数量逐层定位并修复。425 收藏 -
Go 1.24 的 net/http.Protocols 是协议能力集合。本文用 https、http 与 h2c 三种场景说明客户端和服务端配置不一致时何时回退、何时失败,并给出配置与排查清单。219 收藏 -
梳理 Go net/http 的 HTTP/1、TLS HTTP/2 与明文 HTTP/2 配置差异,给出客户端、服务端匹配方式和连接失败排查清单。257 收藏