Go语言技术文章
-
bytes.Reader 的 Len 返回当前未读字节数,Size 返回底层字节切片的原始长度。本文用 Read、ReadAt、Seek 和 Reset 对比两者的变化,帮助你在读取循环和原始载荷统计中选对 API。251 收藏 -
解释 Go go vet copylocks 为什么报告复制 Mutex,并用指针接收者、指针参数和按索引遍历修复包含锁的结构体复制问题。262 收藏 -
bytes.Reader 读到 EOF 后不会自动回到开头。本文用 Seek 重置读取游标,并比较 Seek、ReadAt、Reset 的参数语义、错误边界和适用场景。249 收藏 -
go test 会把测试实际查询过的环境变量纳入缓存输入。变量值变化,或从未设置变为空字符串,通常都会让下一次测试重新执行;用 gocachetest 可直接看出原因。280 收藏 -
strings.CutPrefix 一次只判断一个前缀。本文说明多个候选存在重叠时如何按最长优先,业务规则明确时如何保留显式顺序,以及空前缀和未命中的处理方式。431 收藏 -
Go test 中 -count=1 会绕过成功测试缓存并实际执行一次;-count=0 则把普通测试、基准和 fuzz seed 的运行次数设为零,不能用来验证测试逻辑。本文对比两者与 (cached)、测试二进制、Examples 和 CI 排查的关系。498 收藏 -
Golang · Go教程 | 3天前 | 字符串处理 · Go教程 · 兼容旧版本 · CutPrefix · 协议前缀 · Go 字符串前缀 HasPrefix strings.CutPrefix
讲清 Go strings.CutPrefix 的 after 与 found 返回值,处理可选协议前缀、空前缀、重复前缀和大小写边界,并给出旧版 Go 的兼容写法。366 收藏 -
解释 go test 输出 (cached) 的原因,区分测试二进制、命令参数、环境变量和文件输入,并给出 -count=1、GODEBUG=gocachetest=1 与 go clean -testcache 的排查用法。200 收藏 -
Golang · Go教程 | 3天前 | 标准库 · go字符串 · Go教程 · 代码实践 · API对比 · Go 字符串前缀 HasPrefix strings.CutPrefix strings.TrimPrefix
对比 Go strings.CutPrefix 与 strings.TrimPrefix 的返回值和适用场景,说明何时需要 found 判断、何时只需得到去掉前缀后的字符串,并补充空前缀、大小写和旧版本兼容边界。447 收藏 -
Go 模糊测试的时间上限由 go test 的 -fuzztime 控制,既可以按 30s 这样的持续时间设置,也可以按 1000x 这样的迭代次数设置。本文同时区分 -timeout、-fuzzminimizetime 和 -parallel,帮助你把 testing.F 接入本地开发与 CI。345 收藏 -
从最终输出类型、读取需求、Grow 的字节语义和 Bytes 的别名边界出发,说明 strings.Builder 与 bytes.Buffer 在 Go 中如何选择。494 收藏 -
Go testing.F 找不到失败语料时,先看 testdata/fuzz/FuzzName,再区分只读包回退到 GOCACHE/fuzz 的情况,并用 FuzzName/hash 精确重跑。136 收藏 -
strings.Builder 的 Grow 只预留后续字节容量,String 后继续写入通常不是禁用操作;真正需要警惕的是复制非零 Builder、误把容量当长度,以及负数参数触发 panic。398 收藏 -
解释 Go 原生 fuzz 测试中 testing.F 入口、testing.T 回调、f.Add 种子与失败语料的职责关系,并给出可运行的 go test 命令。138 收藏 -
strings.Builder.Grow 传入的是额外可写字节数,不是最终总容量。本文用 Len、Cap 和 UTF-8 字节预算拆解如何预估容量、控制上界并避免过度分配。292 收藏