Go语言技术文章
-
Go 中把 nil 指针作为 error 返回后,接口会保留具体动态类型,因此 err 可能不等于 nil。本文用代码说明 typed nil 的形成原因、成功分支的正确返回方式,以及类型断言排查时的边界。313 收藏 -
Go crypto/cipher.AEAD 的 Seal 支持用 plaintext[:0] 复用明文存储,但是否真的减少分配取决于剩余容量和切片别名边界。本文说明如何按 Overhead 预留容量,并避开 additionalData 与输入输出的非法重叠。313 收藏 -
Go GJSON 处理 JSON 数组时,可以用 #.字段提取所有元素的同名字段,用条件查询后再投影,或用多路径一次构造只包含指定键的对象。本文给出当前写法、缺失字段处理和旧查询语法迁移边界。312 收藏 -
Go 的 json.Decoder 面向 JSON 输入流,单次 Decode 成功不代表请求体已经结束。本文用第二次 Decode 严格要求 io.EOF,拒绝第二个 JSON 值、非法尾部字符和空请求体,并说明它与 DisallowUnknownFields、请求体大小限制的区别。312 收藏 -
Go database/sql 事务提交后 Rows 仍未关闭,通常与提前退出、未检查 Rows.Err 或把 Commit 当成 Close 有关。本文给出提交前显式关闭结果集、错误回滚和连接池排查方法。312 收藏 -
Go 上传接口应在首次读取前包装 MaxBytesReader,并识别 MaxBytesError 返回 413。通过原始正文示例说明 ContentLength、完整读取、multipart 内存阈值、临时文件清理及单文件限制的区别。312 收藏 -
Go 的 net/http 并没有公开的 Cookie.DomainMatches 方法。本文对比 CookieJar 的真实发送行为与自定义域名判断函数,说明精确匹配、点号边界、HostOnly 和 IP 地址的处理方式。312 收藏 -
Go log/slog 的 Record 是带有隐藏属性状态的日志记录。本文说明普通赋值为什么可能共享状态,怎样用 Record.Clone 安全复制,并结合 AddAttrs、Attrs、Handler 分支和 NewRecord 给出可落地的选择。312 收藏 -
Go 1.27 的 crypto/x509 已支持 ML-DSA 私钥、公钥和签名。本文从 PEM/DER 解析开始,说明怎样读取 *x509.Certificate、判断 ML-DSA-44/65/87,并梳理旧版本、FIPS 模式和解析与验证的边界。312 收藏 -
Go transform 的 ErrShortDst 表示输出空间不足。本文区分容量信号与输入校验,说明返回计数、连续状态及零进展处理,并给出完整转换函数。312 收藏 -
Go encoding/json 处理嵌入结构体时,如果同一层级出现同名字段,JSON 标签会参与候选筛选;唯一候选会被使用,多个同优先级候选则可能全部忽略且不报错。本文用最小示例拆开字段层级、标签优先级和排查方法。312 收藏 -
本文按 fitsio v0.3.0 的公开 API,说明如何用 NewHeader 和 Card 创建带 EXTNAME、DATE-OBS 等关键字的主HDU,再通过 Create、Write 和 Close 写入 FITS 文件,并列出字段、轴长度和资源关闭的回归检查项。312 收藏 -
通过每次 Read 前后的 InputOffset 记录 CSV 输入消费范围,结合错误与输入版本回看原始字节,说明预读、多行字段、字节变换和失败后续传的边界。312 收藏 -
用 Go range over func 和 iter.Seq2 实现可提前停止的函数迭代器,区分空输入、正常结束与读取错误,保留清晰的错误边界。312 收藏 -
GOMAXPROCS限制Go代码执行并行度,并非固定线程总数。本文区分G、M、P,提供只读采样与对照调整示例,并说明恢复数值和恢复默认策略的差别。312 收藏