Go语言技术文章
-
区分 Ants Release 关闭池与业务任务完成,通过完整 WaitGroup 批处理示例处理提交失败计数,并说明停止生产者、超时等待、任务取消和业务成功的不同含义。167 收藏 -
Goose 的 .env 加载和 SQL 迁移变量替换是两套机制:前者提供 GOOSE_* 等 CLI 配置,后者默认关闭,必须用 -- +goose ENVSUB ON/OFF 包住查询。本文按配置来源、占位符语法和发布检查梳理为什么变量没有自动替换。166 收藏 -
对比 Goose UpTo 与 UpByOne 的迁移范围,说明目标版本上限、当前版本、版本空档和单次执行的关系,并给出命令行与 Go API 的选择方法。179 收藏 -
SQLX Select 会把查询结果逐行映射并追加到目标切片,结果规模没有上限时会放大内存、对象和连接占用。本文说明 Select 的真实语义,并给出分页与 Queryx 加 StructScan 的取舍。243 收藏 -
说明 Goose 数据库版本记录不能替代 Down 实现,提供不连接数据库的迁移定位程序,区分 SQL、嵌入资源和 Go 注册迁移,并梳理原发布产物恢复与前向修复选择。208 收藏 -
Go SQLX MapScan 适合读取列名不固定的查询结果。本文给出 Queryx、MapScan、Rows.Close 和 Rows.Err 的配合写法,并说明重复列名、NULL 值以及与 StructScan、SliceScan 的取舍。455 收藏 -
Go SQLX StructScan 报 missing destination name,通常不是数据库连接失败,而是查询返回列无法和目标结构体字段映射。本文用一个小型订单查询说明 db 标签、SQL 别名、Mapper 和 Unsafe 的正确边界。357 收藏 -
解释 Gock 全局规则池与默认拦截状态为何使并发用例互相影响,通过完整串行测试示例管理配置、请求、检查及清理,并说明独立 Client 和不同 URL 的隔离局限。273 收藏 -
解释 Go Gock 的 Persist 为什么会影响后续测试,区分默认 mock、Times 次数限制与持久 mock,并给出 Off 和 RestoreClient 的测试隔离写法。428 收藏 -
解释 Gock 为什么在没有匹配 mock 时直接返回错误,梳理 FIFO 匹配、默认网络隔离、自定义 http.Client 拦截与未匹配请求排查方法。159 收藏 -
解释 Testify mock 调用记录中的可变引用为何影响事后断言,通过 Run 回调复制调用时字段,区分匹配器、调用次数、独立快照及切片映射的复制和并发边界。325 收藏 -
Testify 的 mock.AnythingOfType 比较的是运行时类型名。本文区分 Go 类型别名与定义类型,说明包限定名称、指针和 MatchedBy 的正确用法。231 收藏 -
说明 Go Lumberjack 的 LocalTime 为什么只影响轮转备份文件名,并用标准库 log 和自定义 formatter 分别配置日志正文时间格式。317 收藏 -
解释 Go Testify 的 AssertExpectations 为什么只能证明声明的 mock 期望被满足,不能单独证明调用次数完全正确,并用 Once、Times、AssertNumberOfCalls 和参数匹配清单补齐测试约束。440 收藏 -
解释 Go Lumberjack 的 MaxSize 为什么只限制当前日志文件,并区分 MaxBackups、MaxAge、压缩备份与目录中其它文件,给出目录总量排查和组合配置方法。190 收藏