Go语言技术文章
-
Go SQLX StructScan 报 missing destination name,通常不是数据库连接失败,而是查询返回列无法和目标结构体字段映射。本文用一个小型订单查询说明 db 标签、SQL 别名、Mapper 和 Unsafe 的正确边界。357 收藏 -
用 Gonum interp.PiecewiseLinear 接收严格递增的 X/Y 样本,调用 Fit 拟合分段线性插值器,再用 Predict 查询样本区间内的中间值,并说明区间外结果与其他插值器的选择边界。357 收藏 -
Golang · Go教程 | 1星期前 | JSON · 错误处理 · 数据校验 · Go教程 · Go 嵌套错误 JSONSchema JSON Schema ValidationError 校验错误 JSON Pointer
Go jsonschema/v5 校验失败时,ValidationError 会用 Causes 保留嵌套原因,并提供实例路径、关键字路径和错误消息。本文用递归展开器把错误树整理成前端和日志可直接消费的字段错误列表,同时说明 DetailedOutput、BasicOutput、数组索引和组合关键字的处理方式。357 收藏 -
time.AfterFunc 的回调在独立 goroutine 中执行,Timer.Stop 返回 false 时并不代表回调已经结束。本文解释 Stop 与回调并发的原因,并给出可等待回调收尾的安全写法。357 收藏 -
Golang · Go问答 | 4星期前 | 基准测试 · go · testing · 性能优化 · 性能测试 CPU count GOMAXPROCS testing.B Go benchmark benchtime
Go benchmark 结果波动大时,应先固定计时边界、-benchtime、-count、-cpu 和机器状态,再用多份样本判断优化是否稳定。本文给出 testing.B、GOMAXPROCS 和环境噪声的排查方法。356 收藏 -
Go ExtraFiles 的下标对应子进程 3+i,而非父进程原描述符。本文说明标准流、平台限制与关闭责任,并用双文件示例区分映射错误、读取偏移和总数误判。356 收藏 -
Go 1.27 起,go test 默认启用 stdversion vet 检查,用来发现源文件使用了高于项目语言版本的标准库符号。本文从诊断输出、单独复查到修复判断,说明怎样读懂 stdversion 结果。356 收藏 -
Gonum mat.Dense 的 Slice 返回的是共享底层数据的矩阵视图,不是独立副本。本文用小矩阵说明别名如何传播、半开区间怎样计算,以及什么时候应该改用 DenseCopyOf。356 收藏 -
Go netlink 发送只读查询消息时,重点是正确组合 family、消息类型和 Request、Dump 标志。本文用 mdlayher/netlink 说明 Dial、Message、Execute、分段回复与权限边界。356 收藏 -
Golang · Go问答 | 4星期前 | 数据库 · Context · 后端开发 · Go问答 · Go 连接池 context database/sql 数据库超时 QueryContext 驱动取消
Go context 超时后数据库查询仍未结束,通常要沿着 QueryContext、数据库驱动、Rows 读取和连接池逐层排查。本文给出最小写法、驱动取消边界、资源释放和连接池诊断方案。355 收藏 -
通过私有可比较键、只含值字段的Metadata快照和返回副本的读取接口,在Go context中传递只读请求标签,并区分缺失、子值遮蔽和共享引用风险。355 收藏 -
Go 的随机定位能力不是所有 Reader 都具备。本文用 io.Seeker 和 ReadSeeker 讲清接口断言、SeekStart/SeekCurrent/SeekEnd、返回偏移、越界与资源关闭边界,并给出不支持定位时的降级策略。355 收藏 -
用 math/rand/v2 的 PCG 和两个 uint64 种子创建本地随机源,说明 Uint64 序列复现、并发实例边界和 MarshalBinary 状态恢复方法。355 收藏 -
Go 的 net.Resolver.Dial 只服务于 Go 内置 DNS 解析器;如果当前解析路径选择系统解析器,设置 Dial 也不会接管请求。本文说明 PreferGo、Dial 和实际调用对象之间的关系,并给出排障清单。355 收藏 -
os.RemoveAll 对不存在路径返回 nil 是设计好的幂等语义,但权限、路径竞态或部分删除失败仍会返回错误。本文用清理函数说明如何保留原始错误并正确处理回滚。355 收藏