Go问答技术文章
-
Golang · Go问答 | 3星期前 | 并发 · channel · select · goroutine · go · go并发通信 Go channel发送阻塞 channel缓冲区满 select非阻塞发送
Go channel 是否会阻塞,关键看发送时有没有匹配接收者,或有缓冲 channel 是否仍有空位。本文区分 nil、无缓冲、有缓冲和已关闭 channel,并用 select 写出可控的非阻塞发送。491 收藏 -
Golang · Go问答 | 3星期前 | 数据库 · Context · 后端开发 · Go问答 · Go 连接池 context database/sql 数据库超时 QueryContext 驱动取消
Go context 超时后数据库查询仍未结束,通常要沿着 QueryContext、数据库驱动、Rows 读取和连接池逐层排查。本文给出最小写法、驱动取消边界、资源释放和连接池诊断方案。355 收藏 -
Go 服务中的 goroutine 数量持续增长,不要先猜是哪一行代码泄漏。先观察数量趋势,再用 goroutine profile 对比重复堆栈,沿着 channel、定时器、网络调用和 context 的生命周期找到没有退出条件的工作函数。200 收藏 -
Go http.Server.Shutdown 会先关闭监听器和空闲连接,再等待活动请求结束;长请求、无超时下游和 hijack 长连接会让关闭看起来挂起。本文用一个小型服务说明连接边界、退出预算与排查方法。366 收藏 -
Go 服务启动时报端口被占用时,从 net.Listen 的绑定地址入手,结合 macOS、Linux、Windows 命令定位 PID 和监听范围,区分旧实例、IPv4/IPv6 与通配地址冲突,并给出安全停止、改端口和复查方法。172 收藏 -
Go HTTP 连接未复用先查响应体读取关闭与共享 Transport。通过有限响应体封装和 httptrace 说明 HTTP/1.x、HTTP/2、取消及连接池边界,避免把 Close 或延迟变化当作复用保证。165 收藏 -
说明goquery空选择集调用Attr和Eq的返回行为,区分无节点、缺失属性与空属性值,并用完整Go示例建立必填字段错误边界。377 收藏 -
Go Expr 规则访问可选指针字段时,先用 nil 条件保护成员访问,再复用编译后的 program;同时区分 Compile、Run、未定义变量和关闭短路的边界。243 收藏 -
Go sqlmock 适合锁定 SQL 调用、参数和事务契约,真实数据库测试则负责发现方言、模式、约束、索引与事务环境问题。本文用一张边界表说明两者各自能发现什么,以及如何组合回归。135 收藏 -
Golang · Go问答 | 3星期前 | 并发 · 单元测试 · go · database/sql Go sqlmock MatchExpectationsInOrder 并发查询测试 预期顺序
Go sqlmock 默认按预期注册顺序匹配,多个 goroutine 并发查询时,实际到达顺序可能不同,测试就会误报。本文说明如何用 MatchExpectationsInOrder(false) 解除不必要的顺序约束,同时保留 SQL 和参数匹配,并区分事务等必须有序的场景。313 收藏 -
Go sqlmock 默认把预期 SQL 当正则表达式处理,问号和括号会改变匹配语义。本文说明如何用 regexp.QuoteMeta 或 QueryMatcherEqual 修复测试。295 收藏 -
Golang · Go问答 | 3星期前 | 结构体 · 单元测试 · go · 结构体比较 Go go-cmp cmp.Equal Equal方法 cmp.Transformer cmp.Comparer
go-cmp 的 cmp.Equal 在没有被选项覆盖时,会优先调用符合签名的 Equal 方法,因此不会继续逐字段比较。本文拆解这个决策顺序,并给出用 Transformer 去掉 Equal 方法、或用 Comparer 明确覆盖的测试写法。296 收藏 -
Go go-cmp 比较 nil 切片与非 nil 空切片时默认保留状态差异。本文用最小项目说明 EquateEmpty 的使用方式、Equal 与 Diff 的统一配置,以及不应全局忽略空值差异的业务边界。367 收藏 -
go-cmp 比较含未导出字段的结构体时 panic 不是库失效,而是默认拒绝猜测内部字段语义。本文按字段用途选择 IgnoreUnexported、自定义 Comparer 或 AllowUnexported。438 收藏 -
Go csvutil 按表头名称和 csv 标签匹配独立字段,而非依赖结构体位置。通过双样本小项目解释列重排,并说明无表头、表头失配和自定义字段依赖的边界。200 收藏