Go问答技术文章
-
从平台、路径、工具链、构建标签、共同依赖和符号查找六个边界排查 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 收藏 -
Golang · Go问答 | 2星期前 | JSON · Go问答 · Go encoding/json html/template JSON转义 JavaScript上下文 template.JS
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 收藏 -
Golang · Go问答 | 2星期前 | 连接池 · 故障排查 · database/sql · Go问答 · Go 数据库连接池 QueryContext rows.Close Rows.Err sql.Rows
Go 查询拿到 sql.Rows 后如果在扫描中途返回却没有 Close,底层连接可能长期处于 InUse,达到 MaxOpenConns 后新请求开始等待。本文给出统一关闭、检查 rows.Err 和用 DB.Stats 定位连接占用的方法。386 收藏 -
Go 使用 bufio.Writer 写文件时,Write 成功不等于内容已经落盘。本文拆开 Flush、Sync、Close 的责任边界,并给出可返回错误的关闭流程与最终内容校验方法。103 收藏 -
Go Scanner 默认只能缓冲有限大小的 token,遇到超长日志会返回 token too long。本文说明如何在 Scan 前正确设置 Scanner.Buffer,以及何时改用 bufio.Reader 分片读取。212 收藏 -
Go os.OpenFile 的 perm 不是最终权限。本文用 umask、stat、UID/GID 和挂载状态拆解容器中权限看似失效的原因,并给出最小权限修复方法。366 收藏 -
Go 文件在 Linux 能打开但 Windows 失败,通常是手写分隔符、盘符或相对路径基准不一致。本文用 filepath.Join、FromSlash、ToSlash 和 PathError 给出排查与修复方法。111 收藏 -
讲清 Go atomic.Value 零值 Load、首次 Store 类型确定、sync.Once 懒初始化和不可变配置快照之间的边界,避免 nil 与类型不一致 panic。314 收藏 -
Go test -race 通过并不等于业务状态一定一致。本文从执行覆盖、同步关系和多字段不变量三层排查数据异常,并给出可复查的修复清单。479 收藏