Go问答技术文章
-
t.TempDir 的清理时机绑定调用它的 testing.T:父测试创建的目录会保留到所有子测试完成,子测试创建的目录只保留到该子测试树结束。本文结合并行子测试说明安全共享、隔离和清理顺序。181 收藏 -
解释 t.Parallel 与进程级环境变量的冲突边界,给出显式配置传递、独立测试资源和 exec.Cmd.Env 子进程隔离方案。115 收藏 -
go test 显示 cached 却没有感知输入文件变化,通常是依赖没有进入测试缓存键。本文说明模块内文件、外部输入和环境变量的处理方法,并给出诊断与 CI 落地方案。174 收藏 -
Go 的 replace 可以替换间接依赖,但它只改变主模块依赖图中的模块内容来源;是否进入图仍由 require 和模块图决定。本文用 MVS、go mod graph 与 go list -m all 给出判断方法。208 收藏 -
Golang · Go问答 | 1天前 | 依赖管理 · go · go work sync go work vendor Go workspace inconsistent vendoring Go依赖同步
Go 多模块工作区出现 inconsistent vendoring 时,关键不是手改 vendor/modules.txt,而是先确认 GOWORK 和 use 范围,再同步工作区构建列表、整理模块依赖并重建 workspace vendor。本文给出可复用的排查、同步和 CI 验证步骤。192 收藏 -
从 go env 确认 GOMODCACHE 实际路径,区分 GOPATH/pkg/mod 与 GOCACHE,再用父目录、属主和最小写入测试定位权限错误,并给出迁移与复查方案。490 收藏 -
用最小配方修复 iter.Seq2[T,error] 的错误返回链,覆盖数据源、转换适配器、消费端与 Pull2 的常见吞错位置。383 收藏 -
iter.Pull 把 push 迭代器转换为 next 与 stop 两个函数。只要没有消费到序列末尾,就必须调用 stop;本文从提前返回、并发误用和 goroutine 观测三个方向定位残留。488 收藏 -
讲清 iter.Pull2 的 next、stop 与外部 Err 查询顺序,用单次键值源示例避免提前退出后的资源泄漏、漏错和并发误用。391 收藏 -
Go 1.27 支持具体类型声明泛型方法,但类型参数只出现在返回值时,方法调用仍可能无法完成类型推断。本文给出显式类型实参、目标指针、解析回调和具体包装方法四种改法,并说明规模化 SDK 的取舍。355 收藏 -
Go 1.27 支持具体类型的泛型方法,但泛型方法仍不能直接满足普通接口方法。本文从方法签名、方法集、接收者和约束位置排查,并给出泛型类型、顶层函数与适配器三种修复方案。177 收藏 -
Go 1.27 支持具体类型泛型方法,但指针接收者的方法集和可寻址规则没有改变。本文用可编译与不可编译示例说明变量、map 元素、临时值、方法表达式和接口调用的限制。249 收藏 -
迁移到 encoding/json/v2 时,*T 字段遇到 null 会变成 nil,但缺失与 null 仍可能混在一起。本文用策略表、存在性感知类型和表驱动测试完成兼容处理。235 收藏 -
Go encoding/json/v2 的 MarshalFunc 不会全局注册。自定义格式化器不生效时,应依次检查 Go 版本与导入路径、WithMarshalers 是否传入同一次调用、泛型目标类型、JoinMarshalers 顺序和选项覆盖。260 收藏 -
json/v2 中 omitzero 按 Go 零值判断,omitempty 按 JSON 空值判断。本文用字段类型、IsZero 和迁移清单说明如何选择。461 收藏