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