Go问答技术文章
-
go/ast.ImportSpec 只能告诉你导入声明长什么样,不能单独证明包名是否被引用。本文用 go/types 的 Defs、Uses、Implicits 连接语法节点与语义对象,说明普通、别名、空白和点导入的判断边界。199 收藏 -
Participle 的 Elide 会让注释令牌跳过普通语法匹配,因此它们不会自动成为 AST 字段。本文从实际选型出发,对比 Tokens 元数据、显式捕获和语义注释三种保留方式。198 收藏 -
Go 服务收不到 SIGTERM,通常不是信号本身失效,而是目标 PID、signal.Notify 注册、容器 PID 1 或退出清理边界出了问题。本文给出一套从进程到 supervisor 的排查顺序。198 收藏 -
go-shp 的 Point 只有 X、Y,PointZ 还包含 Z、M;写入 Shapefile 时分别匹配 POINT 与 POINTZ。本文比较字段、BBox、读取分支和写入选择,说明不要把二维点与带高程或测量值的点混用。198 收藏 -
go work sync 面对的是工作区构建列表,不是任意单模块整理命令。本文用 go.work、GOWORK、use 模块和最小版本选择说明它何时会改写 go.mod,以及没有变化时该检查什么。198 收藏 -
Go 数据库连接池空闲连接断开,可能来自 sql.DB 主动回收,也可能是数据库、代理或 NAT 的空闲超时。本文按时间线区分原因,说明连接池参数职责,并给出带边界的排查与配置方案。198 收藏 -
用信封与延迟载荷模式处理异构 JSON,给出逐条分发示例,并说明 RawMessage 复制成本、容量复用、缺失字段清零和异步所有权取舍。198 收藏 -
Golang · Go问答 | 2天前 | 标准库 · 故障排查 · Go问答 · Go 运行时指标 runtime/metrics metrics.Read metrics.Sample metrics.All KindBad
runtime/metrics.Read 不会自动创建样本,切片为空时遍历不到结果;未知指标则会得到 KindBad。本文说明如何填写完整指标名、用 metrics.All 判断支持关系、按 Value.Kind 分派,并封装一个可复用的运行时指标读取函数。198 收藏 -
Go text/template 执行成功但页面为空,通常不是 Execute 没运行,而是写入目标、模板入口、数据字段或空值分支出了偏差。本文给出从输出长度到 ExecuteTemplate 的排查顺序。197 收藏 -
Go 读取 ZIP 时,压缩包和内部条目各有独立的关闭对象。本文用局部函数、错误处理和数据来源对比,说明为什么打开条目后仍要显式关闭资源。197 收藏 -
Go 方法值 x.M 创建时会保存已经求值的接收者。本文用值接收者和指针接收者对照说明旧快照、旧指针与变量重新赋值的区别,并给出方法表达式和显式闭包的修正选择。197 收藏 -
Go WebSocket 升级前写响应体,通常会先提交普通 HTTP 状态,后续就无法再完成 101 Switching Protocols。本文按请求检查、http.Hijacker 接管、101 握手和帧通信的生命周期拆开说明,并给出正确的写入顺序。197 收藏 -
Go filepath.EvalSymlinks 失败时不要只看字符串。本文用 errors.Is 区分目标不存在、符号链接断裂和权限等错误,并给出可直接改造的排障代码。197 收藏 -
Go net.Buffers.WriteTo 返回的 n 可能小于总字节数。本文从官方实现的消费语义出发,说明如何记录基线、区分合法错误与违反 io.Writer 契约的短写,并安全处理剩余数据。196 收藏 -
Go VerifyASN1 验签失败,通常要先检查公钥、原始摘要字节和 ASN.1 签名字节是否来自同一套协议约定。本文给出输入契约、编码区别、签名入口选择和排错表。196 收藏