-
Go 1.23 起可以用 maps.Keys 把 map 的键暴露为迭代器;如果输出、日志或测试需要稳定顺序,再交给 slices.Sorted 或 slices.SortedFunc 生成新的键切片。本文按调试清单说明版本、顺序和键类型边界。
-
Go database/sql 在 Scan 时对 *[]byte 会保存一份调用方拥有的副本,而 *sql.RawBytes 可以避免这次复制,但数据只在下一次 Next、Scan 或 Close 前有效。本文按查询负载说明使用边界、显式复制方式和错误处理。
-
Go 的 slices.Values 可以把已有切片适配成 iter.Seq,让代码直接用 range 逐项消费。本文说明它的顺序、空切片、自定义切片类型和底层数据边界,并比较 Values、Clone 与 Collect 的使用选择。
-
Go bytes.Lines 把 []byte 转成按行遍历的单次迭代器。本文说明换行符、末尾残行、CRLF 处理、切片生命周期,以及它与 bytes.Split 和 bufio 流式读取的取舍。
-
Go cmp.Or 会按参数顺序返回第一个不等于零值的候选,适合把命令行、环境变量、文件配置和默认值组合成清晰的回退链。本文说明它的配置用法、comparable 约束、解析错误边界与常见误区。
-
errors.Join 传入一个非 nil 错误时仍会返回包装错误。本文用最小示例区分 ==、errors.Is 与 Unwrap() []error,并给出单错误和多错误场景的返回策略。
-
Go 的 sync/atomic.OrUint32 适合把多个独立状态压进一个 uint32 状态字,并原子设置指定 bit。本文从位掩码、返回旧值、并发写入和 atomic.Uint32.Or 四个角度说明它的正确用法与边界。
-
Go 的 io.CopyBuffer 允许调用方提供复用缓冲区,适合重复文件或流复制任务。本文说明缓冲区职责、WriterTo 与 ReaderFrom 快速路径、并发复用和 n/err 返回值的判断方式。
-
Go 的 ctx.Err() 只能告诉你上下文已取消或超时,context.Cause(ctx) 则能在使用 WithCancelCause 或 WithTimeoutCause 时读取更具体的原始原因。本文用最小示例说明两者差异、父子上下文传播和工程接入边界。
-
Go os.File.WriteString 适合把字符串直接写入文件,但仍要检查返回的字节数和错误。本文从打开模式、资源关闭、短写判断和 io.WriteString 的通用写法说明如何安全处理文本写入。
-
Go time.AfterFunc 会在延迟到期后异步执行回调。本文说明如何保存返回的 *time.Timer、在回调开始前调用 Stop、判断 Stop 的返回值,并处理取消与回调并发时的资源边界。
-
Go time.Time.AppendFormat 会把时间按 layout 追加到已有字节切片。本文用 -07:00、Z07:00 和 RFC3339 说明时区偏移布局、Location 来源、UTC 的 Z 表示以及常见误区。
-
用 Go archive/zip.FileHeader.SetMode 把文件模式写入 ZIP 条目,配合 CreateHeader 创建归档,并说明解压端读取权限、Unix 元数据和跨平台边界。
-
Go compress/zlib.Reset 可以在保持压缩级别和字典配置的前提下切换输出写入器,适合批量处理多个独立数据块。本文说明 Close、Flush、Reset 的边界,以及 bytes.Buffer 结果复制与所有权管理方法。
-
Go io/fs.Sub 可以从已有 fs.FS 派生一个只看到指定子目录的新文件系统视图。本文用 fstest.MapFS 说明路径前缀、根目录、错误处理和 embed.FS 迁移时的实用边界。