Go教程技术文章
-
把多项错误拼成字符串会丢掉可判断的错误链。本文以校验、写盘和关闭资源为例,演示如何迁移到 errors.Join,保留 errors.Is 判断能力,并处理 nil、重复错误与 errors.Unwrap 的边界。316 收藏 -
使用 Go 标准库 archive/zip 将多个服务端文件逐个写入 ZIP,并通过 HTTP 以附件形式下载;文章同时说明条目命名、Close 顺序、临时文件和错误处理。316 收藏 -
regexp.QuoteMeta 只能构造正则字面量,不能替你修正 Go 字符串字面量。处理 Windows 路径时要分清源码、运行时字符串和 RE2 模式三个边界。316 收藏 -
Go slices.Delete 会原地移动元素并清零被移出范围的尾部槽位,但切片容量仍可能保留底层数组。本文用指针元素说明删除后的引用清理、垃圾回收边界和批量删除策略。316 收藏 -
Golang · Go教程 | 2星期前 | 标准库 · 文件读取 · Go教程 · 错误排查 · Go ReadAll read encoding/csv FieldsPerRecord ErrFieldCount
Go encoding/csv 的列数错误不是等到 ReadAll 结束才检查,而是在读取具体记录时由 Read 逻辑发现。本文对比 Read 与 ReadAll 的返回值、FieldsPerRecord 三种语义,并给出定位故障行的处理方式。315 收藏 -
runtime/metrics.Read 返回 Float64Histogram 后,P99 不能直接对 Buckets 求平均。本文用 Buckets 与 Counts 的累计权重定位分位桶,并说明负无穷、正无穷和样本不足时的处理边界。314 收藏 -
从请求 Context 派生查询超时,正确使用 QueryContext、关闭结果集并区分取消错误,定位 Go 数据库超时后连接仍被占用的原因。314 收藏 -
Go 服务 CPU 飙高、内存上涨或请求变慢时,按症状选择 CPU、heap、goroutine、block、mutex profile,再用 top、list 和对照采样确认热点。314 收藏 -
Go 渲染 HTML 时,应使用 html/template 并让普通用户输入保持 string 类型。本文说明上下文自动转义、属性与 URL 边界,以及 template.HTML 只能承载可信片段的使用条件。314 收藏 -
strings.Map 返回负值时会删除对应的 Unicode 字符,但 len 统计的是字节数。本文用一个 Go 文本清洗器说明如何统计删除数量、判断空结果,并区分合法与非法 UTF-8 输入。314 收藏 -
Go 的 os/exec 不需要把命令拼成一整行:将程序名和每个参数分别传入,带空格的路径就能保持完整,再按场景选择 Output、CombinedOutput 或 StdoutPipe,并用 Wait 完成回收。313 收藏 -
解释 Go 高频循环中反复调用 time.After 的分配与回收边界,区分 Go 1.23 前后的定时器语义,并给出可复用 Timer 的 Stop、排空和 Reset 写法。313 收藏 -
用 Go testing.F 为字符串解析器添加少量边界种子,区分预期的解析错误与真正的不变量破坏,并让 fuzz 失败输入沉淀到 testdata/fuzz/FuzzParseRecord,成为可重复执行的回归样本。313 收藏 -
Go io.CopyBuffer 的缓冲区不是越大越快。本文从 WriterTo/ReaderFrom 复制路径、32 KiB 基线、并发内存预算和错误边界出发,说明如何选择 32、64 或 128 KiB,并给出可复用的文件复制示例。313 收藏 -
使用 Go net/url 生成签名查询串时,统一 Values.Encode、参数排序、重复键策略和 RawQuery,避免空格、加号与二次编码造成验签不一致。313 收藏