Go教程技术文章
-
说明 Go crypto/subtle.XORBytes 处理等长 []byte 的调用方式,解释返回值、目标长度、切片重叠和不等长输入的边界,并给出生产代码中的长度检查方案。323 收藏 -
Go 的 rsa.EncryptOAEP 与 rsa.DecryptOAEP 必须使用相同 label。本文用用途名、数据类型和版本构造稳定 label,封装专用解密入口,并说明错用密文、统一错误处理、哈希一致和真实性边界。442 收藏 -
Go 验证 HMAC 时应先用同一密钥和同一原始消息重算标签,再把对方标签解码为字节,最后交给 hmac.Equal 做恒定时间比较。本文给出函数与 Webhook 示例。213 收藏 -
本文说明 Go ed25519.Options 如何启用 Ed25519ph,重点讲清 SHA-512 摘要输入、Hash 与 Context 的配置,以及 PrivateKey.Sign 和 VerifyWithOptions 的互操作边界。367 收藏 -
讲清 Go crypto/ecdh.NewPrivateKey 导入现有私钥的正确入口,区分原始标量、PEM 与 PKCS#8,并给出曲线长度、转换和存储边界。417 收藏 -
Go 使用 cipher.NewGCMWithTagSize 兼容既有 AES-GCM 协议时,需要固定 12 到 16 字节的认证标签长度,并让 Seal、Open、nonce 和附加数据配置保持一致。本文用一个小项目示例说明参数选择、错误判断和迁移边界。442 收藏 -
讲清 Go context.WithoutCancel 的值查询、取消与截止时间语义,并用 HTTP 请求后的有界后台任务示例说明如何搭配 WithTimeout、避免 nil Done 阻塞和正确释放资源。235 收藏 -
Go 的 container/ring.Link 可以把一个循环链表整体插入另一个环的锚点之后。本文用完整示例说明拼接顺序、返回节点、nil 处理和同环调用边界。125 收藏 -
本文用 map[string]*list.Element 与 container/list 实现最近使用顺序:命中时 MoveToFront,新增时 PushFront,超容量时从 Back 淘汰,并说明节点归属、重复节点和并发安全等容易踩坑的边界。361 收藏 -
用一个可复用的 zlib.ReadCloser 依次解压多个独立数据块,讲清 Reset、ReadAll、字典、错误处理和 Close 的边界。177 收藏 -
用一个可切换位序的 Go LZW 往返小工具讲清 NewWriter 的 LSB 与 MSB 选择:GIF 用 LSB,PDF 用 MSB,自定义协议需显式约定,TIFF 应使用专用实现。150 收藏 -
说明 Go gzip.Reader 默认如何连续读取拼接的 gzip 成员,以及如何用 Multistream(false) 和 Reset 保留成员边界并逐段处理。301 收藏 -
介绍 Go cmp.Or 如何按从左到右的顺序返回第一个非零候选值,并通过配置覆盖示例说明零值语义、comparable 类型约束与不适用边界。239 收藏 -
Go bytes.Buffer.ReadFrom 适合把完整 io.Reader 数据接入内存缓冲。本文说明 EOF、ReadFrom 返回值、Grow、io.LimitReader、ErrTooLarge 与 Bytes 切片所有权的边界。194 收藏 -
用一个小型内存复制场景说明 Go bytes.Reader.WriteTo 的调用方式、返回值、游标推进和错误边界。466 收藏