Go问答技术文章
-
Go base64.DecodeString 返回 CorruptInputError 时,错误值就是需要排查的零基字节偏移。本文用 errors.As 提取位置,结合上下文、字母表、补位、UTF-8 和 Strict 模式,区分非法字符与输入截断。216 收藏 -
解释 Go //go:embed 为什么在目录递归时排除以点号或下划线开头的文件,比较目录名、当前层通配符与 all: 前缀的差异,并给出精确嵌入、结果检查和安全边界。483 收藏 -
Go debug/dwarf.Reader.SkipChildren 只在不需要读取当前 Entry 后代时调用。本文用 Entry 树、Children 标记和 Tag 0 说明剪枝位置,并给出完整遍历与选择性遍历的判断表。197 收藏 -
Go 的 BuildInfo.Settings 是按实际构建条件写入的稀疏键值列表,VCS 字段会因关闭 buildvcs、缺少仓库或工具、模块与仓库目录不匹配等情况而缺失。本文给出判断方法与容错读取代码。430 收藏 -
解释 Go sql.DB.Stats 中 WaitCount 持续增长的含义,区分连接池等待、数据库变慢和资源未释放,并给出窗口采样与参数排查方法。220 收藏 -
Go 的 Rows.Next 返回 false 既可能是正常读完,也可能是遍历途中出错。本文说明 Rows.Err、Scan 和 Close 各自负责什么,并给出完整查询模板。324 收藏 -
Go sql.DB.BeginTx 会用传入的 context 管理整个事务生命周期。上下文取消后 database/sql 会回滚事务,Commit 返回错误。本文区分事务上下文、语句上下文与安全收尾写法。431 收藏 -
Go x509.Certificate.VerifyHostname 忽略旧版 Common Name,是因为主机名校验应使用证书的 SAN。本文区分 DNS SAN、IP SAN 与证书链校验,并给出迁移和排查清单。186 收藏 -
复盘 Go TLS 会话恢复仍走完整握手的常见根因,重点检查客户端缓存、TLS 1.3 会话票据读取、缓存键与多实例票据密钥。334 收藏 -
从证书原材料、默认验证、连接状态和会话恢复四个边界,说明 Go tls.Config.VerifyConnection 与 VerifyPeerCertificate 的选择方法和组合方式。449 收藏 -
Go 的 PSSOptions.SaltLength 可选自动最大盐长、等于哈希长度或指定正整数。本文给出推荐场景、跨语言互操作、验证端严格度、FIPS 边界和测试矩阵。433 收藏 -
Go crypto/rand.Text 当前通常返回 26 个 Base32 字符,但官方只保证至少 128 位随机性并允许未来变长。本文解释长度来源、API 边界和固定长度令牌的显式编码方案。501 收藏 -
crypto.Hash 只是哈希算法标识,Available 检查对应实现是否已链接并注册到当前 Go 二进制。本文用 SHA-256 示例解释 false 的原因、导入方式、New 的 panic 边界和推荐写法。129 收藏 -
解释 Go ed25519.VerifyWithOptions 为什么返回 error,以及签名无效、参数不合法、预哈希长度错误与公钥长度异常分别该怎么处理。293 收藏 -
通过 P-256 私钥与 P-384 公钥的最小示例,说明 Go crypto/ecdh 为什么拒绝跨曲线计算,并给出调用前检查、协议协商和同曲线修复方法。120 收藏