Go问答技术文章
-
性质测试适合输入域宽、确定性强且能写出不变量的函数;示例断言更适合少量关键业务边界、精确输出和外部状态行为。本文结合 Go 原生 fuzzing,给出选择矩阵、幂等性示例、反例与混合测试清单。341 收藏 -
敏感信息进入 Go 日志后,不能只靠调用点自觉替换。本文先说明已泄露日志的止损,再用 slog LogValuer、ReplaceAttr 和统一 Logger 装配建立多层脱敏,并列出嵌套字段、自由文本与旁路输出的验证清单。341 收藏 -
自定义 slog.Handler 重复输出属性,通常源于 WithAttrs 修改共享切片、WithGroup 重复展开或 Handle 合并了两次。本文按属性来源、不可变派生和分组作用域给出排查与修复方法。341 收藏 -
Go net/http 会按目标主机判断敏感请求头是否继续转发。本文结合 CheckRedirect 说明默认行为、跨域边界和受控目标的认证头处理方式。339 收藏 -
Go sync.Cond 的 Wait 返回只表示收到通知,不代表共享条件已经成立。本文用队列式示例说明为什么必须在循环中重新检查条件,并梳理 Signal、Broadcast 与锁的配合边界。339 收藏 -
Go select 多个发送或接收分支同时就绪时会均匀伪随机选择,本文说明 case 顺序、default、关闭通道和 nil 通道的边界,并给出优先级处理方案。339 收藏 -
解释 Go goroutine 因为没人接收 channel 而长期阻塞的原因,并用 context、select、关闭责任和等待机制设计可退出的发送路径。338 收藏 -
Golang · Go问答 | 4星期前 | Context · HTTP客户端 · Go问答 · Go请求超时 Go clienttimeout http.Client Timeout Go客户端超时 Transport阶段超时
本文解释 Go http.Client.Timeout 的总时限范围,并用请求级 context 与 Transport 阶段参数区分不同客户端边界。338 收藏 -
Golang · Go问答 | 3星期前 | go · Context · Go问答 · context.Cause Go context.WithCancelCause CancelCauseFunc Go 上下文取消原因 Go 下游读取取消原因
讲清 Go context.WithCancelCause 返回的 CancelCauseFunc 如何把具体错误传给下游,以及 context.Cause 与 ctx.Err 的区别、取消顺序和资源清理边界。338 收藏 -
Go runtime/pprof 可以把请求分类信息写进 CPU Profile 的样本标签。本文用 pprof.Do 建立请求边界,再用 go tool pprof 的 tags、tagfocus 和 tagroot 分析路由热点,并说明标签继承、覆盖和高基数边界。337 收藏 -
time.Duration 本质是 int64 纳秒计数,乘法、单位换算或退避累加一旦超出约 290 年范围就可能回绕成负数或异常的小值。本文从定时任务故障场景出发,给出边界判断、饱和乘法和定时器接入的 Go 实现。337 收藏 -
Go 服务接入 OpenTelemetry 后,如果 Trace 仍然无法显示清晰的调用关系,通常要从 service.name、HTTP 入出站埋点、上下文传播和批量导出四个边界排查。本文给出一套原创接入思路。335 收藏 -
Go 1.27 泛型方法调用无法推断类型参数时,先核对工具链,再检查普通参数和回调是否提供足够证据,并用显式类型实参区分推断失败、约束不匹配、方法表达式和接口边界问题。335 收藏 -
sql.Conn.Raw 能让 Go 程序临时访问驱动连接,但回调结束后 database/sql 只根据返回错误判断连接是否还能用。本文解释修改驱动状态后的复用风险,以及何时应返回 driver.ErrBadConn。334 收藏 -
cgo 返回的 C 指针并非一律不能保存到 Go。本文区分 Go pointer 与 C pointer,说明 unsafe.Pointer 的持有边界、C.free 释放责任,以及 cgocheck 报错的排查方法。334 收藏