Go教程技术文章
-
Go io.CopyBuffer 的缓冲区不是越大越快。本文从 WriterTo/ReaderFrom 复制路径、32 KiB 基线、并发内存预算和错误边界出发,说明如何选择 32、64 或 128 KiB,并给出可复用的文件复制示例。313 收藏 -
Go filepath.Match 的方括号表示单字符类,可用范围和 ^ 排除规则匹配文件名;本文同时说明整串匹配、转义、Windows 分隔符以及 ErrBadPattern 的处理方式。390 收藏 -
Go filepath.Rel 遇到绝对路径和相对路径混用时,先用 filepath.Abs 统一计算基准,再处理跨根目录、../ 越界、符号链接和 URL 路径等边界。288 收藏 -
用 Go filepath.WalkDir 遍历目录时,SkipDir 只跳过当前目录,SkipAll 才能停止剩余遍历。本文通过查找文件示例说明错误处理、提前停止和未找到结果的区别。126 收藏 -
Go 的 string 不保证天然是合法 UTF-8。用 unicode/utf8.ValidString 在入库前做字节级拦截,再叠加长度、格式和数据库字符集检查,才能避免坏编码混入数据层。272 收藏 -
用 Go utf8.DecodeRune 扫描原始字节时,RuneError 只有配合 size==1 才能判断非法编码,并通过字节游标准确定位原始偏移。177 收藏 -
Go 的 utf8.DecodeLastRuneInString 处理空字符串时返回 RuneError 和 size=0。本文用返回值对照、UTF-8 多字节裁剪示例,区分空输入、合法 U+FFFD 与非法尾字节。463 收藏 -
regexp.QuoteMeta 只能构造正则字面量,不能替你修正 Go 字符串字面量。处理 Windows 路径时要分清源码、运行时字符串和 RE2 模式三个边界。316 收藏 -
讲清 Go regexp.ReplaceAllStringFunc 的回调输入边界,演示如何隔离计数和去重状态,并处理并发调用、捕获组与 API 选择,避免结果串线和数据竞争。370 收藏 -
strings.Map 返回负值时会删除对应的 Unicode 字符,但 len 统计的是字节数。本文用一个 Go 文本清洗器说明如何统计删除数量、判断空结果,并区分合法与非法 UTF-8 输入。314 收藏 -
Golang · Go教程 | 1星期前 | 性能优化 · Go教程 · go strings.Builder Go Builder Grow Go 字符串预留容量 Go Builder 扩容 Go UTF-8 字节长度
Go strings.Builder Grow 预留容量后仍扩容,通常是把追加字节预算误当成最终总容量,或漏算 UTF-8 字节、分隔符和后续写入。本文用 Len、Cap 和实际字节长度拆解原因,并给出可复用的检查方法。104 收藏 -
处理键值文本时,strings.Cut 适合围绕第一个分隔符取左右两段,strings.Split 适合获取全部片段。本文用 Go 示例说明两者的返回语义、空字段、缺少分隔符和空分隔符边界,并给出选择方法。297 收藏 -
本文用具体代码说明 Go bytes.Clone 如何解除 []byte 与原切片的底层数组别名,并梳理 nil、空切片、子切片 len/cap 以及缓存和异步交接时的复制边界。324 收藏 -
用 bytes.Reader 从指定偏移量读取时,Seek 会移动当前位置,ReadAt 不会移动游标,切片则改变可见数据范围。本文用示例说明三种写法与越界处理。473 收藏 -
Golang · Go教程 | 1星期前 | 性能优化 · Go教程 · go bytes.Buffer bytes.Buffer Reset Go 缓冲区复用 Go Buffer 容量复用 Go Bytes 切片别名
Go 复用 bytes.Buffer 时,Reset 会把可读长度归零并保留底层存储。本文用连续写入、容量观察和 Bytes 切片复制说明正确用法与生命周期边界。327 收藏