-
Go 测试套件中,慢测试可以通过 testing.Short 与 t.Skip 在 go test -short 时跳过、完整模式时执行。本文说明标志关系、代码组织、与自定义环境变量的取舍,以及不该交给 -short 解决的边界。
-
Go 的 hex.DecodeString 不会自动忽略十六进制字符串中的空格。本文用 strings.Fields 统一清理空白,再检查空输入、奇数长度和非法字符,并说明什么时候不应该静默删除分隔符。
-
Go 的 json.Decoder.Token 返回的是 JSON 词法 token,Delim 负责标出数组和对象边界,More 只用于判断当前容器是否还有元素。本文从 Token 看似错位的现象出发,说明如何用 Token、More 与 Decode 组合读取 JSON 流。
-
Go 的 JSON 类型错误不要只看错误字符串。本文用 UnmarshalTypeError 的 Field、Offset、Value 和 Type 四个字段,把嵌套字段与原始 JSON 字节位置对应起来,并说明类型错误后的部分填充边界。
-
Go 用 ParseRequestURI 解析无前导斜线的相对引用失败,需先区分请求路径、通用引用与 HTTP 绝对地址。本文给出对应解析封装,说明 URL 字段、双斜线及 fragment 的差异,避免自动补协议改变含义。
-
Go 使用 atomic.Uint64 累计独立事件时,需要统一 Add 与 Load 访问并共享对象指针。本文用完整示例说明快照、任务结束、禁止复制及64位对齐,并划清溢出、热点竞争和多字段一致性的边界。
-
Go 的 io.NewSectionReader 可以把支持 ReaderAt 的数据源包装成固定区间读取器。本文用分段文件读取场景说明 offset、length、Read、ReadAt、Seek、Size 与 EOF 的关系。
-
用 Go BinaryMarshaler 与 BinaryUnmarshaler 实现自定义二进制类型,明确输入副本、独立编码结果、错误原子性以及长度和版本处理,避免切片共享带来数据联动。
-
用 Go io.TeeReader 可以在读取文件、请求体或消息流时同步写入 hash.Hash,边读边计算 SHA-256 而不必先缓存完整输入。本文说明完整消费、摘要结果和写入错误之间的关系,并比较 TeeReader、MultiWriter 与 io.ReadAll 的适用场景。
-
Go ExtraFiles 的下标对应子进程 3+i,而非父进程原描述符。本文说明标准流、平台限制与关闭责任,并用双文件示例区分映射错误、读取偏移和总数误判。
-
Go 的 exec.Cmd.Wait 不只等待子进程退出,还会等待标准输入输出相关的复制协程。若后代进程继承 stdout 或 stderr 的写端,父进程退出后仍可能等不到 EOF。本文说明如何排查 StdoutPipe 读取顺序,使用 WaitDelay 设定收口上限,并区分 ErrWaitDelay、ExitError 与上下文取消。
-
Go 信号处理偶发丢失,通常要从 NotifyContext 的注册时机、context.Done 的观察位置和 stop 的清理时机分层排查。本文给出一套统一退出入口,说明第一轮信号、收尾阶段和 stop 恢复默认行为之间的边界。
-
Go plugin 的 Lookup 找不到符号时,先区分插件打开失败与符号查询失败,再检查导出规则、名称拼写、构建方式和宿主插件的工具链一致性。
-
Go 模块路径和本地目录显示不一致时,先用 go env 确认主模块与工作区,再用 go list -m -json 对照 Path、Replace、GoMod 和 Dir,最后检查 require、replace 与 go.work 的作用范围。
-
Go 依赖下载失败要区分模块代理与校验服务。本文解释 GOPROXY 回退、GOSUMDB 与 go.sum 的职责,并给出固定单模块项目准备 vendor、工具链及离线构建的方案。