Go问答技术文章
-
本文从 database/sql 的调用路径出发,区分 sql.DB.Ping、PingContext 与 driver.Pinger.Ping 的职责,说明驱动怎样报告失活连接,以及应用如何把超时和单连接错误接回连接池策略。382 收藏 -
Go 泛型类型推断失败时,先检查普通实参、类型约束和接口静态类型,再用最小范围的显式类型参数修复调用。382 收藏 -
Golang · Go问答 | 1星期前 | Go问答 · Go crypto/x509 RawSignatureAlgorithm SignatureAlgorithm UnknownSignatureAlgorithm 证书签名算法
Go crypto/x509 中 RawSignatureAlgorithm 保存的是 DER 编码的 AlgorithmIdentifier,不是可直接比较的算法名称。本文说明如何优先读取 SignatureAlgorithm,如何在未知或原始字段异常时解析 OID,并区分算法识别与签名验证。382 收藏 -
Go 中 TLS 证书链完整仍提示未知机构,通常是服务端链条与客户端信任根混淆,或 RootCAs 覆盖了系统根池。本文按错误类型说明公共 CA、私有 CA 和自定义 CertPool 的正确处理方式。382 收藏 -
Go t.Cleanup 会在测试及其子测试完成后执行清理函数,同一作用域遵循后注册先调用。本文用资源注册栈、父子测试边界和 defer 对照,说明如何预测释放顺序并安排资源依赖。382 收藏 -
required_if 比较其他字段是否等于指定值,required_with 则在任一关联字段有值时触发必填。本文用生产请求结构体说明两者的触发条件、零值判断、多条件写法和发布检查边界。382 收藏 -
Go race 检测器需要 cgo,并不代表自动覆盖 C 库内部全部访问。本文区分 Go 共享状态、C 库内部并发与跨语言指针生命周期,给出串行封装和最小测试命令,说明无报告的适用范围。381 收藏 -
Go 的 URL.Path 会保存解码后的路径,RawPath 只是可选的编码提示。本文用 %2F 场景解释 EscapedPath 何时采用 RawPath、何时忽略它,并给出解析和手动构造 URL 时的稳妥写法。381 收藏 -
用 Go 的 utf8.DecodeRune 扫描可能含坏字节的 []byte 时,非法输入会返回 RuneError 和 size=1。本文用一个小型扫描器说明如何按 size 推进游标,避免重复读取同一字节造成循环不前,并覆盖空输入与混合输入边界。380 收藏 -
GJSON 的 Exists 判断字段是否存在,空字符串判断的是字符串内容;缺失、null、空串和非空串并不是同一种状态。本文用一段最小 Go 示例说明四种状态的差异,并给出输入校验与审计时的选择方式。380 收藏 -
Go Ticker 相关的 goroutine 增长需要区分接收循环滞留和业务回调堆积。本文解释 Stop 不关闭 C、Go 1.23 回收边界,并给出可取消同步循环,明确取消、停表与等待收尾的职责。378 收藏 -
Go channel 关闭并耗尽后,单值接收仍会返回元素类型的零值。本文用 int channel 说明合法零值与关闭状态的区别,并给出 value、ok 双值接收、range 和缓冲 channel 的边界处理方式。378 收藏 -
Go x/image/font/sfnt 的 Font 方法可以并发调用,但同一个 *sfnt.Buffer 不能被并发复用。本文结合 GlyphIndex、Metrics 和 LoadGlyph 说明独立 Buffer、nil Buffer、sync.Pool 借还边界,以及返回 Segments 前必须复制的原因。378 收藏 -
Go BitString.RightAlign 将填充位放到返回字节的开头。通过五位和跨字节示例理解对齐,并处理共享内存、独立复制、位长保留及 DER 解析边界。378 收藏 -
Go database/sql 的 Conn.PingContext 可以检查一条已获取的专用连接是否仍然可用。本文说明 DB.Conn、超时 Context、PingContext 返回值和 Conn.Close 的正确配合,并区分全局连接池检查与单条会话检查。378 收藏