Go语言技术文章
-
Go regexp.FindAllStringIndex 返回非重叠区间是设计行为,不是漏查。本文用 aba/ababa 说明左到右的匹配推进、n 参数的真实作用和 UTF-8 字节下标,并给出按 rune 起点推进的外部游标方案来收集重叠结果。341 收藏 -
Go 字符串出现非法 UTF-8 后,如何用 ToValidUTF8 按连续片段替换、保留合法 U+FFFD,并约束替换字符串和原始数据保留策略。226 收藏 -
Go container/heap 中已有元素修改优先级后,应先更新对象字段,再用对象当前 index 调用 heap.Fix;本文解释 Swap 的索引维护、Fix 与 Remove/Push/Init 的边界,以及如何固定这些一致性风险。254 收藏 -
Go container/list 的 Remove 会返回被删除节点的 Value。本文说明 any 类型断言、删除后的节点边界,以及遍历删除时保存 Next 的写法。353 收藏 -
用 Go list -json 查看包的 GoFiles、EmbedPatterns 和 EmbedFiles,区分参与构建的 Go 源文件、嵌入声明与最终匹配到的资源文件,并给出模板化提取方式。207 收藏 -
通过 go env -json 导出指定环境字段,并用 Python 按键读取。说明退出码与 stdout、stderr 的分离,CGO_ENABLED 字符串判断、失败后保存策略,以及配置快照与环境还原的区别。122 收藏 -
Go test 命中缓存时会显示 (cached)。本文说明 -count=1 如何只对当前命令强制重新执行测试,并区分 -run、go clean -testcache、构建缓存和缓存决策诊断。421 收藏 -
Go 的 Rows.ColumnTypes 返回结果集列元数据,ColumnType.DatabaseTypeName 读取驱动提供的 SQL 类型名。本文说明它与列名、ScanType、Length 的区别,以及驱动不支持时空字符串的排查方法。174 收藏 -
Go testing.AllocsPerRun 会先执行一次 warm-up,再从 runtime.MemStats 的 Mallocs 增量中计算指定 runs 次调用的平均分配次数。本文拆解测量边界、整数平均值、GOMAXPROCS 约束和常见误解。172 收藏 -
Go http.Request.Clone 会复制 Header,适合在保留原请求的同时为下游请求追加字段;本文对比 Clone、WithContext 和 Body 的复制边界,给出隔离 Header 修改的写法。476 收藏 -
Go sql.Tx 提交成功后再 Rollback 返回 ErrTxDone,表示事务对象已经结束,并不否定提交结果。通过事务收尾函数说明 defer 回滚、错误链保留、Commit 失败边界与收尾所有权。224 收藏 -
Go httputil.DumpRequestOut 在 body=true 时需要读取请求体生成调试表示,再恢复 req.Body 供后续发送继续读取。本文解释这段生命周期、body 参数选择、内存与敏感数据边界,以及错误处理方式。206 收藏 -
Go debug/dwarf 的 LineReader 可以用 Tell 保存当前行表位置,再用同一个 LineReader 调用 Seek 恢复。本文用一个紧凑示例说明保存时机、继续读取方式,以及 LineReaderPos 不能跨行表复用的边界。371 收藏 -
Go time.Date 遇到夏令时回拨时,同一个本地墙上时间可能对应两个实际时刻。本文说明 Date 的不确定性,并用 Time.Equal、UTC、Unix 秒和明确偏移建立可靠的判断与存储方式。343 收藏 -
用 Go 更新配置或索引文件时,临时文件写完并不等于断电后一定存在。本文按写入、文件 Sync、Rename 和目录项持久化拆开说明,给出可复用的安全替换模板与跨平台边界。499 收藏