Go问答技术文章
-
crypto.Hash 只是哈希算法标识,Available 检查对应实现是否已链接并注册到当前 Go 二进制。本文用 SHA-256 示例解释 false 的原因、导入方式、New 的 panic 边界和推荐写法。129 收藏 -
解释 Go ed25519.VerifyWithOptions 为什么返回 error,以及签名无效、参数不合法、预哈希长度错误与公钥长度异常分别该怎么处理。293 收藏 -
通过 P-256 私钥与 P-384 公钥的最小示例,说明 Go crypto/ecdh 为什么拒绝跨曲线计算,并给出调用前检查、协议协商和同曲线修复方法。120 收藏 -
从 invalid buffer overlap 故障讲清 Go cipher.AEAD.Open 的切片重叠契约,比较精确重叠、完全分离与错位重叠,并给出原地解密、独立缓冲区和认证失败处理方法。355 收藏 -
Go aes.NewCipher 报 invalid key size 时,关键不是截断或补零,而是确认 key 的实际字节数。本文区分原始字节、hex、base64 和密码输入,给出 16/24/32 字节检查、错误处理与 AES-GCM 调用边界。165 收藏 -
ring.New(0) 返回 nil 不是初始化失败,而是 container/ring 对空环的明确表示。本文结合官方源码区分 nil 空环与 Ring 零值,说明 n<=0 的处理、可安全调用的方法及两种工程修复方式。385 收藏 -
从公开 API 和 heap.Interface 两层拆开 Go heap.Remove、heap.Pop 与 Pop 方法的索引语义,掌握根节点出队、任意位置删除和索引维护的正确写法。293 收藏 -
解释 Go gzip.Header.Name 解压后为空的四类原因:源流未写 FNAME、Name 设置过晚、Writer.Reset 清空头部,以及多成员默认只记录首个 Header,并给出正确代码与检查清单。129 收藏 -
解释 Go flate.NewReaderDict 遇到错误字典时为何可能报 CorruptInputError,也可能无错误却产生错误字节,并给出字典 ID、输出上限、完整性校验与 zlib 替代方案。465 收藏 -
解释 Go cmp.Compare 遇到 NaN 时的返回规则:NaN 小于任意非 NaN、NaN 与 NaN 相等、负零与正零相等,并给出默认排序及 NaN 靠后的定制写法。258 收藏 -
说明 Go bytes.Buffer.Next 的参数超过未读长度时会返回全部剩余字节并耗尽缓冲区,进一步解释切片有效期、精确定长读取和空缓冲边界。456 收藏 -
Go bufio.Reader.UnreadByte 只能撤回最近一次成功读到的字节,因为 Reader 只维护一个回退状态而不是历史栈。本文结合缓冲游标、失效调用和替代方案说明如何正确处理解析试探。341 收藏 -
解释 Go bufio.Scanner 连续空 token 停止或 panic 的根因,区分 nil token、advance 与 ErrFinalToken,并给出安全 SplitFunc 写法。296 收藏 -
tar.Header.Format 变成 FormatUnknown,通常表示 Reader 虽能解析条目,却无法把其头部可靠归类为 USTAR、PAX 或 GNU;本文区分未知格式与 ErrHeader,并给出安全转存方式。397 收藏 -
zip.File.Open 返回解压后的逻辑内容并通过 io.ReadCloser 管理读取资源;OpenRaw 返回 ZIP 中未经解压的压缩载荷。本文以解析失败场景拆解两者差异,给出业务读取、内容哈希和 Writer.Copy 原样迁移的正确选择。123 收藏