Go语言技术文章
-
runtime.KeepAlive 本身没有错误返回值。本文从受保护的资源操作入手,说明如何保留 n 和 err,再用 errors.Is、errors.As 区分中断、句柄失效与其他底层原因,并把 KeepAlive 放在正确的生命周期边界。341 收藏 -
Go go toolchain 看起来没有释放时,先区分命令进程与模块缓存。本文按工具链选择、GOMODCACHE、GOCACHE 和进程观察逐层排查,说明什么时候清理缓存,什么时候应该继续查启动器或 CI 任务。155 收藏 -
Go 1.21 以后,go 命令可能根据 GOTOOLCHAIN、go.mod 或 go.work 选择另一个工具链。本文按错误形态区分配置语法、版本过旧、PATH 缺失和自动下载失败,并给出用 go version、go env 与 toolchaintrace 定位的顺序。172 收藏 -
Go 工具链在目录、终端和 CI 中选择不同版本时,如何核对 PATH、GOTOOLCHAIN 与项目声明,控制执行来源并记录实际版本。404 收藏 -
go mod tidy 升级后出现依赖增删、go.sum 变化或程序行为不同,不要直接回滚。本文按基线、diff、模块图、工具链和分层复现五步定位变化来源,并给出可提交的判断标准。267 收藏 -
go mod tidy 负责按源码导入关系整理 go.mod、go.sum 和模块依赖,不负责关闭文件、HTTP 连接或 goroutine。本文区分模块缓存与运行时资源,给出依赖观察、缓存清理和程序资源泄漏的排查方法。437 收藏 -
从 GOMOD、go env、GOPROXY、GOPRIVATE 和 tidy 输入边界入手,排查 Go go mod tidy 配置没有生效的常见原因。114 收藏 -
go mod tidy 失败时,先按模块路径、版本选择、代理下载和本地文件四类原因分流,再用 go list、go env 和文件 diff 缩小范围。本文给出可重复的排查命令,以及修复后的干净回归方法。404 收藏 -
go mod tidy 在本地与 CI 反复修改模块文件时,如何对齐实际工具链与源码输入,识别测试及标签依赖,并区分 go.mod 和 go.sum 的变化原因。133 收藏 -
Go 升级后 go test -shuffle 下出现行为变化,先不要把失败归因于随机数。本文比较关闭随机化、固定 seed、子测试缩小范围和并行复查四种定位方式,帮助你把顺序依赖与工具链差异拆开。462 收藏 -
ParseRequestURI 面向 HTTP 请求中的绝对 URI 或绝对路径;如果把不带协议的 host/path 当成完整 URL,解析就会失败。本文用 Go 示例区分它与 url.Parse 的适用边界。307 收藏 -
go test -shuffle 暴露资源残留时,如何识别共享夹具的顺序依赖,用测试作用域管理文件与后台任务,并保存种子复查清理结果。332 收藏 -
go test -shuffle 暴露出结果不稳定时,先保存随机种子,再区分共享状态、并行调度和测试缓存。本文用固定种子复现问题,并给出修复后的回归命令。286 收藏 -
go test -shuffle 失败时,先根据是否出现 -test.shuffle seed 区分参数解析、构建或测试运行阶段,再用固定 seed 重现顺序问题。172 收藏 -
Go 版本升级后如果 testing.T.Setenv 的结果看起来变了,先核对 Go 版本契约,再排查 t.Parallel、子测试祖先和环境变量读取时机。本文比较三条定位路径,并给出可直接复现的最小测试与修复选择。377 收藏