Go语言技术文章
-
Go 的 FindStringSubmatchIndex 返回 -1 时,通常表示对应可选捕获组没有匹配,而不是整体正则失败。本文拆解 nil、-1,-1、空匹配和字节偏移的区别,并给出安全读取索引的写法。437 收藏 -
Go 模板提示自定义函数未定义时,应在同一模板集合解析前注册 FuncMap。通过统一构造器、命名模板与独立缓冲输出,区分注册、解析和执行错误,避免在并发请求中修改共享模板。313 收藏 -
Go 模板 Execute 返回错误时,已经写入 ResponseWriter 的部分正文不会自动回滚。本文解释错误来源,展示先写入 bytes.Buffer、成功后再提交 HTTP 响应的处理方式,并说明状态码、日志和写出错误的边界。304 收藏 -
Go html/template 自动转义后页面显示异常时,不要直接关闭转义。本文从文本、属性、URL 和可信内容边界入手,给出最小排查、修复与复查方法。133 收藏 -
Go 的 t.Run 会为同名子测试自动追加序号保证唯一,但日志仍可能难以区分业务场景。本文用稳定字段组合测试名,改善失败定位和 -run 筛选。496 收藏 -
Go 基准测试初始化被算进 ns/op 时,先确认计时边界。本文说明 b.Loop、b.N、ResetTimer、StopTimer 和 StartTimer 的正确分工,并处理每轮必须准备输入的场景。410 收藏 -
Go 测试中 t.Parallel 与环境变量冲突时,先检查并行祖先和共享状态,再将环境适配测试串行化,用独立配置注入支持并行业务测试。223 收藏 -
Go 泛型里的 any 是普通空接口,而带类型元素的接口约束只描述允许的类型集合,不能直接当作变量类型。本文用最小示例拆开两者差异,并给出保留 T、转为 any 和定义方法接口的修复方案。181 收藏 -
Go 泛型调用无法推导类型参数时,先判断缺少的是实参类型信息、函数值上下文还是约束匹配,再补完整类型参数或最短前缀。本文用无参数函数、部分推导、回调和 comparable 约束说明修复边界。171 收藏 -
Go 私有模块校验和失败要先区分公共校验库访问、仓库认证和真实摘要冲突。本文解释 GOPRIVATE 与显式覆盖,分别给出直连、企业代理配置,并说明为何应保留 go.sum 和不可变版本。241 收藏 -
Go 泛型约束列出多个类型时,类型参数并不能自动获得这些类型各自拥有的方法。本文从类型集合、约束方法集、指针接收者和联合类型四个边界排查调用失败,并给出可落地的修复写法。372 收藏 -
Go 项目已有 vendor 目录却没有使用时,先检查主模块根目录、go.mod 的 go 版本、GOFLAGS 或 -mod 覆盖项,再用 go mod vendor 同步 vendor/modules.txt,并用 -mod=vendor 确认构建路径。413 收藏 -
Go pprof 阻塞 profile 没有数据时,重点检查 SetBlockProfileRate、pprof 路由、采集窗口和真实阻塞事件。本文给出最小配置、读取命令和排查边界。209 收藏 -
Go 的 replace 会改变依赖内容和模块图,但不会单独完成版本选择。本文用 go list -m all、go env GOWORK 和最小 go.mod 示例,定位版本不一致并区分本地开发与正式构建配置。430 收藏 -
Go pprof 堆 profile 与实时对象数量不同,常见原因是指标单位、存量与累计口径、GC 时点和采样估算不同。本文用两份本地快照示例说明如何保留对象、显式选择指标,并避免误判泄漏。211 收藏