Go问答技术文章
-
Go mod tidy 删除依赖后构建失败,通常是源码依赖图与实际构建输入不一致。本文从 tidy 差异、导入路径、生成代码、vendor、workspace 和 CI 入口逐层定位并给出可复查的修复方案。125 收藏 -
Go 本地 replace 不生效时,应核对主模块、模块身份、版本范围、本地目录基准及 go.work 覆盖。本文用双模块联调配置说明排查方法和迁回正式依赖前的收尾事项。244 收藏 -
Go work sync 没有更新某个模块的 go.sum,通常不是命令失效,而是它同步的是 workspace build list 到各模块的 go.mod;workspace 独有的校验记录由 go.work.sum 保存。本文按文件职责和命令边界说明如何判断结果。436 收藏 -
Go 项目出现 vendor inconsistent dependencies 时,通常是 go.mod 已变更而 vendor/modules.txt 仍是旧清单。本文按模块图、go mod vendor 和离线构建三个边界,给出恢复一致的排查顺序。449 收藏 -
Go 私有模块可用 GOPRIVATE 与 GONOSUMDB 排除公共校验数据库查询,同时保留公开依赖校验。本文区分代理和校验职责,并给出直连私仓及企业代理两种配置示例。358 收藏 -
GOPROXY=direct 只负责绕过模块代理并直接访问版本控制仓库,私有依赖仍需正确配置 GOPRIVATE、认证方式和 GOVCS。本文按路径、认证、仓库发现与代理策略给出排查顺序。209 收藏 -
Go GOPRIVATE 配置后私有模块仍走代理,常见原因是路径未命中、GONOPROXY 覆盖或配置没有进入目标进程。本文按公共代理、企业代理和校验数据库三条边界给出排查与修复方法。416 收藏 -
Go 的模块缓存不是构建缓存,默认位于 GOPATH/pkg/mod。本文用 go env GOMODCACHE 读取当前生效目录,并解释自定义配置、缓存迁移和安全清理时容易混淆的边界。205 收藏 -
介绍 Go 中 GODEBUG=http2debug=1/2 的使用边界,先确认 HTTP/2 协议,再按 stream ID 和关键帧定位连接、流控、RST_STREAM 与 GOAWAY 问题。310 收藏 -
Go runtime/metrics 提供 automatic、forced、total 三条 GC 周期计数。本文用 metrics.Read 读取它们,并通过相邻采样的增量判断 GC 来自运行时自动触发还是应用主动触发。452 收藏 -
Go 1.25 会在 Linux 容器中参考 cgroup CPU 带宽限制并可能周期更新 GOMAXPROCS。本文说明如何用 containermaxprocs=0 关闭容器感知,并区分 updatemaxprocs=0 与显式 GOMAXPROCS 的边界。389 收藏 -
解释 Go 1.25 在 Linux 容器中如何综合逻辑 CPU、CPU 亲和性和 cgroup CPU 限额计算 GOMAXPROCS,说明 CPU request、手动覆盖、GODEBUG 和自动更新的边界。388 收藏 -
连续调用 Go json.Decoder.Decode 时,io.EOF 表示没有下一个顶层 JSON 值,不等于输入损坏。本文区分正常收尾、空白尾部、截断 JSON、语法错误和类型错误,给出可复用的判断分支。269 收藏 -
Go finalizer 的触发时机由垃圾回收器决定,不能替代文件、连接等资源的确定性释放。本文对照显式 Close、defer 和 KeepAlive,给出从 finalizer 主路径迁移的代码与回归清单。389 收藏 -
Go GC 参数改变后,不能只看一条 gctrace 日志判断接口延迟。本文区分 GOGC、GOMEMLIMIT 与 GODEBUG 的职责,用 GC 摘要、暂停分位数和执行追踪建立同一负载下的对照方法。130 收藏