Go语言技术文章
-
Golang · Go教程 | 2天前 | 标准库 · 性能 · 迭代器 · 字符串处理 · Go教程 · Go Go 1.24 iter.Seq strings.SplitAfterSeq 字符串分段
strings.SplitAfterSeq 从 Go 1.24 开始返回单次使用的 iter.Seq[string],按分隔符产出保留分隔符的字符串片段。本文用一个可运行的小实验说明如何消费它、如何提前停止,以及空分隔符和无匹配时该如何验收。141 收藏 -
regexp.ReplaceAllString 会把替换字符串里的 $1 当成子匹配引用;需要保留字面量时,应根据输入来源选择 ReplaceAllLiteralString 或 ReplaceAllStringFunc。205 收藏 -
Go 1.24 引入的 os.Root 能把文件操作限制在指定目录内,但它不是忽略符号链接的黑盒。本文用 OpenRoot、Root.Open 与 Root.FS 拆解路径越界、目录链接和 DirFS 的边界。280 收藏 -
Go 1.24 引入的 runtime.AddCleanup 适合为包装资源安排兜底清理,但回调不是确定时钟,也不能替代显式 Close。本文用文件句柄包装场景说明 AddCleanup、KeepAlive 和 Cleanup.Stop 的真实边界。467 收藏 -
用 httptrace.ClientTrace 的 GotConnInfo 判断 Go HTTP 请求拿到的是新连接还是曾经使用过的连接,并区分 WasIdle、IdleTime 与请求体关闭时机。501 收藏 -
Go 的 maphash.Bytes 适合把字节序列映射为进程内的 uint64 分桶值,但它不是加密摘要,也不能替代原文相等判断。本文用短键索引场景说明 MakeSeed、相同 Seed、不同数据结构实例和碰撞复核之间的边界。450 收藏 -
Go 的 net/url.URL.Redacted 会像 URL.String 一样重组地址,但只把 User 中的密码替换成 xxxxx。本文用可运行示例拆开 String、Redacted、Password 的边界,避免把脱敏字符串误当作请求地址或以为查询参数也会自动隐藏。492 收藏 -
encoding/csv.Reader 遇到列数不固定的 CSV 时,应把 FieldsPerRecord 设为负数关闭列数校验,再在业务层按字段长度和列名做校验。本文比较 0、正数和负数三种设置,给出可复现的读取与验收方法。367 收藏 -
bytes.Buffer.Bytes 返回的是未读内容的别名切片,不是自动拷贝。本文用 Write、Grow、Reset 和 append 的边界说明何时可以直接读,何时必须 copy,避免缓存复用后数据悄悄变化。267 收藏 -
Go 1.27 为 go doc 增加 -ex,并支持 package@version 查询。本文用 bytes.ExampleBuffer 演示如何找到可执行示例,说明模块版本边界、输出范围和旧工具链的兼容检查。286 收藏 -
Go 1.24 新增的 crypto/rand.Text 适合生成密钥、令牌等随机文本。本文从 rand.Text 的内部调用链出发,说明 RFC 4648 Base32 字符集、固定长度、128 位随机性与错误处理边界。146 收藏 -
Golang · Go问答 | 2天前 | 正则表达式 · 调试 · regexp · Go问答 · 文本处理 · Go regexp 捕获组 FindAllStringSubmatchIndex 字节位置
FindAllStringSubmatchIndex 返回的是原字符串的字节区间,不是字符下标。本文用一个日志标注小工具拆开整段匹配、捕获组、未匹配分组和 UTF-8 边界,给出可运行的映射方法。487 收藏 -
Go 1.25 为 testing.TB 增加 Output 方法。本文用一个并行子测试场景说明它与 Log 的关系、缓冲何时刷新,以及测试函数返回后为什么不能继续写入。414 收藏 -
Golang · Go教程 | 2天前 | 日志 · 标准库 · 性能 · Go教程 · log/slog · Go 日志级别 log/slog Logger.Enabled Handler.Enabled Attr
Go log/slog 的 Logger.Enabled 会在日志参数处理前询问 Handler 是否接收当前级别。本文用可运行示例说明昂贵参数计算、slog.Attr 构造和 LogAttrs 的边界,避免关闭日志时仍付出无效成本。231 收藏 -
time.Time.AppendText 从 Go 1.24 起提供面向 encoding.TextAppender 的 RFC 3339 文本输出。它适合把时间追加到已有字节缓冲区,但要处理错误返回,并注意它保存的是时区偏移而不是 Location 名称。489 收藏