Go语言技术文章
-
Go crypto/mldsa 的签名输入涉及原始消息、Context、参数集和私钥种子。本文对比生成与导入密钥、普通与确定性签名,给出最小示例及输入选择表。112 收藏 -
Go runtime/trace.StartRegion 返回一个需要在同一 goroutine 中结束的 Region。本文用最小 trace 接入示例说明 defer、regionType、嵌套和 goroutine 边界,并比较 StartRegion、WithRegion 与 NewTask 的适用场景。112 收藏 -
Go httptest 默认使用系统选择的回环端口;出现端口被占用时,重点检查是否通过 -httptest.serve 或自定义 Listener 固定了地址,以及测试结束是否调用 Close。111 收藏 -
Go math/rand/v2 ChaCha8 同时提供 Read 和 Uint64,但两者交错调用时返回位顺序未定义。本文说明可复现测试、拆分随机源和状态快照的稳定写法。111 收藏 -
Go JSON 出现重复字段时,map、struct 和嵌套对象可能得到不同结果。本文按 encoding/json v1 的处理顺序说明覆盖与合并,并补充 encoding/json/v2 的严格差异和排查清单。111 收藏 -
Go atomic.Uint32.And 用按位与原子清除指定标志,并返回更新前的完整位图。本文说明 ^mask 的正确写法、组合状态处理和并发边界。111 收藏 -
Go FlagSet 可以为每个子命令建立独立参数集合。本文用标准库示例说明如何切分 os.Args、分别调用 Parse、处理错误与位置参数,并总结公共参数的组织边界。110 收藏 -
Go TLS 排障中,PeerCertificates 表示对端发送的证书列表,VerifiedChains 表示本地构造出的验证链。本文说明如何结合握手状态、客户端与服务端角色判断证书链,避免只凭证书数量下结论。110 收藏 -
用 Go crypto/rand.Read 为令牌填充固定长度的安全随机字节,解释 32 字节预算、十六进制与 Base64 编码长度、错误边界和上线前应观察的生成指标。110 收藏 -
zip.Writer.Close 不只是关闭一个对象,它还要结束当前条目、补写中央目录和结束记录,并刷新内部缓冲,因此部分写入错误会在最后才返回。本文拆开这些职责,说明为什么必须同时检查 Create、Write 和 Close。110 收藏 -
Go x/text/encoding/unicode 的 UseBOM 会在 UTF-16 输入带起始 BOM 时覆盖默认字节序,无 BOM 时再回退到默认值。本文用示例区分 UseBOM、ExpectBOM 和 IgnoreBOM。110 收藏 -
Go cmp.Or 可以按参数顺序返回第一个非零值,适合组织请求配置、环境变量和代码默认值的回退链,也能串起多字段排序比较。本文说明零值、comparable 约束与参数求值边界。110 收藏 -
Go 读取 CSV 时出现逗号字段错位,通常是把字段内容里的逗号当成了分隔符,或输入没有遵守引号规则。本文用 encoding/csv 说明 Reader、FieldsPerRecord、ParseError 和 Writer 的正确处理方式。109 收藏 -
Go 1.27 的 database/sql.ConvertAssign 主要面向数据库驱动实现。本文说明如何在 RowsColumnScanner.ScanColumn 中复用 Scan 的类型转换规则,正确传递 ScanContext,并处理 NULL、溢出、Scanner、EOF 和资源关闭边界。109 收藏 -
用 slog.NewLogLogger 把旧 log.Logger 调用桥接到 slog.Handler,说明固定级别、Handler.Enabled 过滤、文本输出和结构化字段的边界。109 收藏