Go问答技术文章
-
go test -shuffle 暴露出结果不稳定时,先保存随机种子,再区分共享状态、并行调度和测试缓存。本文用固定种子复现问题,并给出修复后的回归命令。286 收藏 -
go test -shuffle 失败时,先根据是否出现 -test.shuffle seed 区分参数解析、构建或测试运行阶段,再用固定 seed 重现顺序问题。172 收藏 -
Go 版本升级后如果 testing.T.Setenv 的结果看起来变了,先核对 Go 版本契约,再排查 t.Parallel、子测试祖先和环境变量读取时机。本文比较三条定位路径,并给出可直接复现的最小测试与修复选择。377 收藏 -
testing.T.Setenv 不是通用资源释放器,它通过 Cleanup 在测试结束后恢复环境变量。本文按生命周期、并行限制和直接 os.Setenv 三条线排查“没有释放”的错觉,并给出文件、连接和 goroutine 的独立清理写法。384 收藏 -
Go testing.T.Setenv 测试单独通过、整包失败时,如何区分并行限制、配置缓存与后台任务污染,并用串行环境适配和显式输入稳定测试。174 收藏 -
testing.T.Setenv 不会返回 error,设置失败会直接让测试失败;并行测试还会触发额外限制。本文区分 t.Setenv、os.Setenv、Fatal 输出和并发冲突,给出稳定的 Go 测试写法。175 收藏 -
slices.Delete 不负责缩小底层数组或关闭文件等资源。本文区分返回值、Go 1.22 起的尾部清零、容器复制、其他引用与 Close 所有权,给出可选收缩的原创示例。134 收藏 -
slices.Delete 的结果看似不稳定,通常来自忽略返回值、共享底层数组、len/cap 误判或并发读写。本文用 Go 示例和排查表说明稳定删除区间、处理尾部引用与隔离数据竞争的方法。315 收藏 -
Golang · Go问答 | 1天前 | 标准库 · Go问答 · 版本升级 · Go Base strconv.ParseInt Go升级 bitSize NumError ErrRange ErrSyntax ParseInt行为
Go 升级后 strconv.ParseInt 结果看似变化,通常应先比较输入字符串、base、bitSize 和 error 处理。本文用一套可复现的排查入口拆开前缀推断、位宽范围与 NumError,帮助判断差异来自调用契约还是升级本身。401 收藏 -
strconv.ParseInt 没有需要关闭的资源。批量解析后内存增长,应区分累计分配、当前堆和业务留存;通过有界错误摘要示例说明 NumError、输入文本和错误缓存的生命周期。150 收藏 -
Golang · Go问答 | 1天前 | 标准库 · 错误处理 · Go问答 · Go Base strconv.ParseInt bitSize ParseInt结果 NumError ErrRange ErrSyntax
strconv.ParseInt 本身是确定性的,结果看似不稳定通常来自 base、bitSize、输入前缀或忽略错误。本文用架构边界随笔的方式拆解参数契约、NumError、ErrSyntax 与 ErrRange,帮助把跨环境解析规则固定下来。273 收藏 -
strconv.ParseInt 的错误不能只看 Error() 字符串。本文用 NumError、errors.Is 和参数边界区分语法错误、数值越界、非法进制与非法位宽,并给出适合接口输入的处理方式。398 收藏 -
默认 bufio.ScanLines 能识别 LF 与 CRLF,却不会把单独 CR 当作行结束。本文实现一个兼容混合行尾的 SplitFunc,并说明缓冲区末尾、atEOF、长 token 与错误检查的处理方式。438 收藏 -
Go 升级后 bufio.Scanner 的分行结果、token 数量或错误表现发生变化时,先固定工具链和输入,再核对 SplitFunc、Buffer、Bytes 生命周期与 Err 结果,避免把输入边界误判为版本回归。262 收藏 -
bufio.Scanner 本身不负责关闭底层 Reader。本文用文件读取场景说明资源所有权、defer 释放、Scan 错误检查和长 token 边界,帮助定位文件句柄或连接没有回落的问题。147 收藏