Go教程技术文章
-
用 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教程 | 2星期前 | 性能优化 · 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教程 | 2星期前 | 性能优化 · Go教程 · go bytes.Buffer bytes.Buffer Reset Go 缓冲区复用 Go Buffer 容量复用 Go Bytes 切片别名
Go 复用 bytes.Buffer 时,Reset 会把可读长度归零并保留底层存储。本文用连续写入、容量观察和 Bytes 切片复制说明正确用法与生命周期边界。327 收藏 -
Go 中 bufio.Writer.Write 成功并不代表底层资源已经写入,Flush 才会把缓冲内容交给文件、网络或自定义 io.Writer。本文说明 Flush 报错的原因、Write 与 Flush 的边界,以及文件、重试和 Sync 的处理清单。367 收藏 -
bufio.Reader.ReadString 读不到分隔符时,可能返回已经读到的字符串和 io.EOF。本文用返回值边界、最后一段处理和读取循环说明如何避免丢数据、误报错误与死循环。470 收藏 -
通过 go mod why 的包级、模块级和 -vendor 查询,理解依赖路径范围,避免把解释命令误当成清理或版本选择命令。420 收藏