Go教程技术文章
-
Go os.Link 返回错误时,不要只看字符串。通过 LinkError 和底层 errno 区分跨文件系统、权限、目标冲突与文件系统不支持,再决定复制或符号链接兜底。386 收藏 -
Go 的 database/sql 使用 QueryRow 查询单行时,真正的错误要到 Scan 才返回。本文说明如何用 errors.Is 判断 sql.ErrNoRows,并区分空结果、字段 NULL、查询失败和多行结果等边界。386 收藏 -
Go encoding/csv Reader.ReuseRecord 可以让流式读取复用记录切片,减少短生命周期分配。本文解释默认行为、只读当前行的低分配写法,以及保存记录时为什么必须复制切片。386 收藏 -
Go 的 norm.NFD 会把预组装字符转换为基础字符与组合附加符。本文从 String、AppendString、Bytes 讲到 Reader、Transform 和边界处理,说明如何拆分组合字符,以及为什么它不等于去重音或按用户感知字符分割。386 收藏 -
后台任务最难排查的不是启动,而是失败后谁负责停下、错误如何回到请求方、剩余 goroutine 怎样确认已经退出。本文用 Go errgroup 组织并发任务,拆解退出信号、错误回收和最小验收方式。385 收藏 -
用 Go archive/zip 按条目读取大文件,先检查目录元数据,再用 File.Open 和 io.CopyBuffer 流式处理,同时区分文件名编码、路径安全、压缩算法和校验错误。385 收藏 -
Golang · Go教程 | 1个月前 | 切片 · 数据结构 · 标准库 · 泛型 · Go教程 · Go slices稳定去重 Go切片去重 Go保留顺序去重 Go泛型切片处理 Go slices包
使用 Go 的 slices 与泛型思路处理切片全局去重:保留第一次出现的值和原始顺序,同时说明 slices.Compact 的边界、不可比较元素和复杂度取舍。385 收藏 -
Go maphash.Seed 只属于单个进程,不能序列化或跨进程重建。本文解释它与 Hash、Sum64 的关系,并给出保存稳定摘要、重启后重建内存分桶的 Go 实现方案。385 收藏 -
Go archive/zip 将 ZIP 条目的扩展字段放在 FileHeader.Extra 中。本文用安全的 TLV 遍历读取原始字节,处理未知字段、截断输入、重复字段与条目遍历边界。385 收藏 -
Go泛型可用类型集和底层类型项限制数值参数。通过整数、实数约束与业务计数白名单示例,说明自定义类型接纳、同一类型参数及溢出精度边界。385 收藏 -
Go cmp.Or 从多个同类型候选值中返回第一个非零值,适合组织请求值、环境值和默认值的回退链,也能组合多级排序比较结果。本文说明其用法、零值边界与验证方式。385 收藏 -
Go regexp.FindReaderSubmatchIndex 面向 io.RuneReader 返回首个整体匹配及各捕获组的字节区间。本文说明整数切片的成对下标、未匹配分组的负一标记、无匹配时的 nil 返回,以及流式 Reader 可能提前读取的边界。385 收藏 -
Go fastjson 在重复解析JSON时可以复用 Parser,减少反复创建解析器和临时对象的分配压力。本文说明 Parser、Value、ParserPool 的生命周期边界,并给出可直接改造的代码结构。385 收藏 -
Go unicode/utf8.RuneStart 只能判断单个字节是否可能是 UTF-8 编码的首字节,不能代替完整校验。本文用分块扫描、DecodeRune 和 Valid 的组合说明 ASCII、续字节、非法字节与不完整尾部的处理边界。385 收藏 -
讲清 Go io/fs.WalkDir 命中目标后如何用 fs.SkipAll 正常结束全部遍历,并对比 fs.SkipDir、普通 error 与旧版本兼容写法。384 收藏