Go问答技术文章
-
Go 泛型出现 cannot infer type 时,先判断类型参数是否出现在普通实参中,再用显式类型参数或调整函数签名完成修复。105 收藏 -
Go fuzz 测试一直产生新输入时,先区分覆盖率探索与输入域失控,再用 seed corpus、长度格式约束和固定 fuzz 预算缩小空间,让失败样本更快复现。124 收藏 -
Go benchmark 每次运行结果差很多,通常不能只靠增加 -count 解决。本文从计时区间、go test 参数、机器隔离和 benchstat 比较四个方面,给出一套可重复的环境噪声控制方法。111 收藏 -
Go TestMain 没有 error 返回值,初始化失败时应先清理已创建资源,再用 os.Exit(1) 明确阻断测试;初始化成功则保存 m.Run 的退出码,清理后原样返回。130 收藏 -
Go test ./... 返回很快并不一定是测试没执行,本文区分本地目录模式与包列表模式,说明如何识别 (cached)、用 -count=1 强制重跑,并选择 GODEBUG 与 testcache 清理范围。444 收藏 -
Go trace 页面打不开,先检查 trace.out 是否仍在写入,再确认 trace.Stop、文件 Close 和进程退出顺序,最后排除浏览器与旧格式兼容问题。210 收藏 -
Go pprof profile 为空时,先区分采样窗口、目标负载、阻塞与互斥采样开关,以及 StopCPUProfile 和 Writer 写入边界,再选择正确的修复动作。364 收藏 -
从平台、路径、工具链、构建标签、共同依赖和符号查找六个边界排查 Go plugin 加载失败,给出可复现的 Open/Lookup 错误判断方法。216 收藏 -
Go build 的 -ldflags 不是主动截断空字符串,问题通常来自 Shell 展开与 Go 参数列表拆分。本文说明 -X 的完整 assignment 写法、带空格值的引号边界,以及用 go build -n 排查参数丢失。318 收藏 -
Go CGO 交叉编译出现 exec gcc not found 时,先确认目标平台、CGO_ENABLED 和 CC,再在目标 C 交叉编译器与关闭 CGO 之间选择,最后用二进制架构检查避免误用主机 gcc。432 收藏 -
Go 测试包中 embed 文件读不到时,先区分编译期模式匹配、embed.FS 内部路径和 os.ReadFile 工作目录三个边界,再用 go list 查看 TestEmbedPatterns 与 XTestEmbedPatterns,快速定位测试资源归属。477 收藏 -
Go html/template 输出 JSON 时出现 \u003c、\u0026 等转义字符,通常是模板针对 HTML 或 JavaScript 上下文的安全编码,并不代表 JSON 损坏。本文区分接口 JSON、模板对象和 script 内嵌数据的处理方式。491 收藏 -
Go template 报 function not defined 时,关键是把 Funcs 注册放到 Parse 前,并逐项检查模板函数名、文件解析入口、ExecuteTemplate 名称和函数签名。196 收藏 -
Go 的 database/sql 负责传递查询与参数,但不统一规定占位符写法。本文用 MySQL 的 ? 和 PostgreSQL 的 $1、$2 对照说明驱动差异,并给出查询隔离、动态标识符白名单和测试检查方法。221 收藏 -
QueryContext 超时后连接仍在 InUse,不一定是连接泄漏。本文从驱动取消能力、Rows.Close、Rows.Err 和 DB.Stats 四个角度说明如何定位回池延迟。416 收藏