Go问答技术文章
-
Go 服务收不到 SIGTERM,通常不是信号本身失效,而是目标 PID、signal.Notify 注册、容器 PID 1 或退出清理边界出了问题。本文给出一套从进程到 supervisor 的排查顺序。198 收藏 -
Go FlagSet 的 ContinueOnError 不等于静默,SetOutput 才配置诊断去向。通过独立缓冲区示例说明如何捕获输出,区分自定义 Usage、全局集合、外层日志和帮助请求,避免重复打印或丢弃错误。348 收藏 -
Go filepath 会按照编译目标操作系统选择路径分隔符和绝对路径规则,因此 Join、Clean、IsAbs 等结果可能与开发机不同。本文区分本地文件系统路径和斜杠协议路径,并给出 path、ToSlash、FromSlash、Abs 与 Rel 的使用边界。420 收藏 -
Go DirFS 只保证从指定目录开始打开文件,不会自动阻止符号链接越过根目录。本文区分 fs.ValidPath 的词法检查与真实文件边界,并给出 Go 1.24 起使用 os.OpenInRoot 和 os.Root.FS 的处理方式。153 收藏 -
Go embed 读取模板时报路径不存在,通常不是文件没打进二进制,而是 //go:embed 模式、FS 内部路径和 ParseFS 参数不在同一层级。本文用几个最小结构说明如何定位并修正。258 收藏 -
Go ldflags 注入版本变量失败,应先核对包级字符串声明和完整符号路径,再检查引号、脚本覆盖与实际产物。给出 main.Version 最小示例和包内变量写法,区分链接期赋值与运行时覆盖。440 收藏 -
Go build tags 没有选中预期文件,通常不是标签失效,而是文件头位置、文件名后缀、布尔表达式、目标环境或 -tags 参数其中一层没有匹配。本文给出一套用 go list 定位实际文件集合的排查方法。107 收藏 -
Go 交叉编译在 CGO_ENABLED=1 时失败,通常不是 GOOS 或 GOARCH 写错,而是目标 C 编译器、sysroot 或原生库没有对齐。本文按基线、工具链、依赖和产物四层给出排查方法。100 收藏 -
Go 下载私有模块时出现 sum.golang.org 校验错误,通常是私有模块匹配规则没有配置,或把代理、校验数据库、仓库凭据三个问题混在了一起。本文按错误层级给出 GOPRIVATE、GONOSUMDB、GONOPROXY 的配置和排查方法。315 收藏 -
Golang · Go问答 | 1星期前 | 标准库 · JSON · go · 故障排查 · 故障排查 Go encoding/json JSON指针 json.InvalidUnmarshalError
Go json.Unmarshal 的目标参数必须是非空指针。本文区分结构体值、nil 接口、nil 指针和指向指针变量的外层指针,并用 errors.As 识别 InvalidUnmarshalError,避免把参数错误与 JSON 语法或字段类型错误混为一谈。152 收藏 -
Go work 没有使用本地模块,通常不是本地代码没有更新,而是工作区没有被当前命令发现、use 没指向含 go.mod 的模块根目录、导入路径与 module path 不一致,或 GOWORK=off 关闭了工作区。本文按排查顺序给出修复方法。166 收藏 -
Go mod tidy 按当前模块源码与工具声明整理依赖,不把配置字符串或安装记录当作导入关系。通过模块归属、驱动空白导入、工具声明和构建标签解释依赖删除,并给出对应维护方法。252 收藏 -
Go 项目存在 vendor 目录却在构建时找不到模块,通常与主模块根目录、go.mod 版本条件、vendor/modules.txt 不一致或依赖未被收集有关。本文给出从定位主模块到选择 -mod 模式的排查路径。459 收藏 -
Go trace 文件过大通常与记录窗口太长、运行时事件密度高或用户标记过多有关。本文说明如何用短窗口、任务边界和 FlightRecorder 保留可分析的诊断片段,并区分 trace、pprof 与业务日志的分工。173 收藏 -
Go pprof CPU 图没有业务函数,通常不是 pprof 失效,而是采样窗口没有覆盖业务 CPU、符号化没有拿到匹配二进制,或过滤参数把业务节点隐藏。本文按资产、风险链路和复查动作给出排查顺序。243 收藏