Go语言技术文章
-
围绕 go.mod、vendor/modules.txt 与构建模式,整理 Go inconsistent vendoring 的定位、重建和 CI 复查清单。415 收藏 -
从标签表达式、文件名后缀和 GOOS/GOARCH 三层筛选解释 Go 文件为何被排除,并用 go list 定位实际构建集合。277 收藏 -
Go 模块拆分后出现 ambiguous import,通常是父模块和拆分子模块同时提供同一个包路径。本文用模块图、版本配套升级与 replace 过渡说明迁移处理方式。290 收藏 -
Go 本地 replace 在 CI 失败,常见原因是主模块选择不同或替换目录缺失。本文解释相对路径基准、检出布局、Docker 构建上下文及发布边界,并给出诊断命令。423 收藏 -
Go 私有依赖出现校验和失败时,按 GOPRIVATE、GONOSUMDB、GOPROXY 和 Git 凭据分层排查,避免用全局关闭校验掩盖代理或认证问题。116 收藏 -
从导入图、包级变量依赖和 init 三个层面排查 Go 服务启动时读到错误全局配置的问题,并给出更可维护的初始化清单。328 收藏 -
Go 嵌入字段的方法提升遵循浅层优先规则,同一深度出现同名方法时短选择器会产生歧义。本文用结构体示例说明显式字段路径、外层统一入口与接口方法集检查方法。113 收藏 -
Go 值变量能调用指针方法,却不一定能赋给接口。通过方法集、构造函数和容器示例,区分自动取地址与接口实现规则,说明何时传指针、何时保留值语义。488 收藏 -
Go 泛型类型推断失败时,先检查普通实参、类型约束和接口静态类型,再用最小范围的显式类型参数修复调用。382 收藏 -
Golang · Go问答 | 4天前 | defer · 错误处理 · go · 返回值 · 排错 · 命名返回值 Go defer defer 修改返回值 error 包装 return 执行时机
Go defer 可以在函数真正返回前修改命名返回值,但不能把普通局部变量的修改追溯到已经准备好的返回结果。本文对比两种写法,并给出错误包装与可读性边界。420 收藏 -
Go 循环中使用 defer 关闭文件时,defer 会等所在函数返回才执行,文件多时可能造成句柄累积。本文用局部函数和显式 Close 两种方式改写,并说明错误处理与适用边界。107 收藏 -
Golang · Go问答 | 4天前 | 标准库 · go · 性能排查 · 直方图 运行时指标 Go runtime/metrics Float64Histogram Buckets Counts
Go runtime/metrics 的 Float64Histogram 返回边界与计数两个切片,本文说明 len(Buckets)-1 的长度关系、相邻边界区间、KindBad、空样本、Inf 边界和累计指标差分的处理方式。255 收藏 -
Go errors.Is 判断包装错误不生效时,优先检查 %w 是否保留错误链、哨兵错误是否复用,以及自定义 Is 是否只做稳定的浅匹配。189 收藏 -
用 Go httptrace.GotFirstResponseByte 记录响应头首字节延迟,区分服务端等待、响应体读取和 HTTP/2 不适用边界。323 收藏 -
Golang · Go问答 | 4天前 | goroutine · go · Context · Go问答 · Http请求 Go Goroutine 取消 context 超时 Deadline Done err
Go context deadline 过期只会发出取消信号,不会强制终止忽略 context 的工作。本文从派生 context、检查点和 HTTP 驱动响应三个层面说明请求仍执行的原因与修复边界。331 收藏