Go语言技术文章
-
runtime.KeepAlive 只保证对象在指定位置前仍然可达,不负责关闭文件描述符、连接或其他外部资源。本文从终结器提前运行的风险出发,说明 KeepAlive 的正确位置、显式 Close 的责任和资源持续占用的排查方法。176 收藏 -
Go runtime.KeepAlive 只负责在指定调用点保持对象可达,不会修复数据竞争或非法指针。本文按资源句柄、终结器、unsafe/cgo 与并发边界拆解结果不稳定的排查方法。423 收藏 -
Go工具链升级后出现编译、测试或运行行为变化时,固定源码和依赖,用新旧工具链建立对照,区分模块声明、兼容默认值与环境差异,并保存可复现的定位记录。122 收藏 -
Go go toolchain 配置没有生效时,先检查当前目录、GOTOOLCHAIN 来源以及 go.mod、go.work 的 go/toolchain 行,再按优先级清理覆盖配置。本文给出一套从现象到最小确认的排查顺序。475 收藏 -
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 收藏