Go问答技术文章
-
Go 的 IPv4-mapped IPv6 地址看起来像 IPv6,但它包裹的是 IPv4。本文用 netip.Addr 说明白名单直接比较为什么失效,并给出用 Unmap 统一规范化、保留真正 IPv6 语义的实现方式。253 收藏 -
Go DNS 解析在本机正常、容器里失败,通常不是 Go 随机改变了结果,而是两侧的 resolv.conf、hosts、网络命名空间或解析器路径不同。本文给出一套从输入配置到 net.Resolver 的排查与修复路线。405 收藏 -
从 GOTOOLCHAIN、go.mod/go.work 的 go 与 toolchain 行出发,解释 Go 工具链为何自动切换,以及 auto、path、local 和固定版本在开发、CI、离线环境中的差异。311 收藏 -
按依赖变更说明Go vendor不自动刷新的原因,区分模块声明、包引用与模块缓存,给出单模块更新和工作区范围处理方法,并对齐CI构建模式与快照提交。454 收藏 -
Go embed 报 pattern 没有匹配文件,通常不是资源不存在,而是 pattern 相对目录、文件名大小写、扩展名或目录可见性与实际结构不一致。本文用最小示例拆解定位方法。330 收藏 -
multipart.FileHeader.Size 是文件部件的大小元数据,读取长度还会受到当前游标、读取上限和错误处理影响。本文用 Go 示例拆开这几个数字的含义,并给出上传场景的排查与限制方式。320 收藏 -
修改环境变量后 Go 构建结果没有变化,不一定是缓存失效。本文区分运行时变量、构建参数和 cgo 外部依赖,给出缓存命中排查与安全重建方法。278 收藏 -
Go GOPROXY 返回 404 不一定说明版本写错,也可能是当前代理没有该模块或回退链没有按预期生效。本文按配置、版本列表和代理协议请求逐层判断原因。291 收藏 -
go test -json 会把多个包的测试和构建信息写成交错的 JSON 事件流。本文说明如何用 Package 归档测试输出,用 Action、ImportPath 和 FailedBuild 识别构建事件,避免把日志归到错误的包。143 收藏 -
解释Go模块checksum mismatch的含义,按项目记录、缓存、代理和版本改写定位差异,提供独立缓存诊断命令,并说明删除go.sum或关闭认证为何不能代替修复。376 收藏 -
Go test -run 使用不锚定正则筛选测试,遇到子测试时还会按斜杠拆分名称;本文整理顶层测试、t.Run 路径、名称清洗和命令引号导致匹配不到的排查方法。156 收藏 -
Go 1.27 的 vet 可能提示 %w 包装了错误类型指针。本文解释值接收者、动态类型与 errors.Is/As 的关系,并给出修复和复查方法。423 收藏 -
Go 1.22 改变了 for 循环变量的作用域。本文从 go.mod、闭包捕获和 GOEXPERIMENT=loopvar 三个线索判断代码使用的是新语义还是旧语义,并说明何时仍需显式传参。310 收藏 -
Go 的 iter.Pull 可以把 iter.Seq 这种推送式迭代器转换为 next 和 stop 两个主动拉取函数。本文用一个小型筛选场景说明 ok 结束信号、提前停止和 defer stop 的正确边界。500 收藏 -
从Wait提前返回与计数错误切入,说明WaitGroup零计数时Add必须先于Wait的规则,提供启动前登记、独立结果槽位示例,并检查Done配对、值复制和批次复用。278 收藏