Go教程技术文章
-
复用 Go 的 time.Timer 时,Reset 的安全关键不是重新设置时长,而是先确认旧定时器是否停止、是否仍有到期信号,以及是否存在多个 goroutine 同时消费 C。本文用单次超时循环拆解 Stop、Reset、timer.C 和并发读取的边界。199 收藏 -
Go 的 slices.SortStableFunc 会在比较结果相等时保留原顺序,适合按单一字段排序又要维护同组先后关系的场景。本文用订单优先级示例拆解比较函数、稳定性和空切片边界。476 收藏 -
用 Go netip.Prefix.Contains 实现路由白名单时,IPv4、IPv4-mapped IPv6 与前缀长度必须先统一判断,本文给出可运行的核验方法。141 收藏 -
目录扫描不一定要为每个文件再做一次 Stat。本文从 os.ReadDir 返回的 DirEntry 出发,区分 Type 与 Info 的职责,并给出按目录项类型筛选、必要时再调用 entry.Info 的可复现写法。414 收藏 -
用 archive/tar.Reader 顺序读取 tar 包时,目录项不应被当成文件内容处理。本文从 Reader.Next 的自动丢弃规则出发,给出跳过目录、限制目标路径、区分 io.EOF 与 ErrInsecurePath 的可验证写法。293 收藏 -
os.ReadFile 适合一次性读取小文件,但面对超大配置会把完整内容装入 []byte。本文比较 os.ReadFile、os.Open 与 bufio.Reader 的使用边界,给出按行分块解析和可复查的内存控制方法。307 收藏