Go语言技术文章
-
go work sync 会用 MVS 计算工作区构建列表,再把相关依赖版本同步回各模块的 go.mod。本文给出执行、审查、tidy 分工与 CI 独立验证方法。480 收藏 -
Go fmt.Errorf 的 %w 能同时保留上下文和底层错误身份,但也会把底层错误纳入接口契约。本文说明包装位置、包边界转换和日志去重策略。431 收藏 -
用一个共享 map 的最小测试复现 Go 并发读写竞态,说明 go test -race 的触发边界,并用 sync.RWMutex 收拢修复方案。483 收藏 -
Go 的 errors.Is 会沿错误包装树匹配哨兵值。本文用 %w 上下文包装、错误分类和 API 契约示例,说明为什么 ==、%v 拼接和重复 errors.New 会失效。439 收藏 -
go vet 的 printf 分析器会识别自定义格式化包装器。本文用纯文本与格式化入口拆分方案解释非固定格式串告警,给出签名修正、调用迁移和边界判断。238 收藏 -
从构建上下文、//go:build、文件后缀和 go list 文件集合入手,区分 Go 编译缓存复用、标签未命中与 cgo 外部库变化,给出可重复的排查和 CI 修复顺序。429 收藏 -
本文用 Number 与 ID 两个示例说明 Go 泛型类型集合约束的设计方法,覆盖 ~、|、comparable、命名类型、map 键和 API 复用边界。254 收藏 -
讲清 Go GOPROXY 逗号与竖线回退差异,配置 GOPRIVATE、GONOSUMDB,并用 .netrc、GOAUTH 和 Git 凭据处理私有模块认证。147 收藏 -
从 go.mod 的 go 指令、完整模块图与裁剪模块图对比入手,定位 module graph pruning 暴露的依赖缺失,补足显式 require 并用 tidy、兼容检查和构建验证修复边界。380 收藏 -
Go modules 的 replace 适合本地联调、临时修复和 fork 迁移,但必须和 require 配对,并确认它只在当前主模块生效。本文用模块解析、依赖图、测试和发布清理四个检查点,整理一套可回滚的替换方案。379 收藏 -
讲清 Go 泛型切片转换中 nil 与空切片的差异,使用 S ~[]E 保留命名切片类型,并给出类型推断与复制边界的实用写法。310 收藏 -
讲清 Go 1.22 cmp.Or 的 comparable 泛型约束、候选值顺序和零值语义,并用泛型辅助函数组合字符串、数值与指针默认值。100 收藏 -
围绕 Go slices.BinarySearch 讲清升序切片的查找、未命中插入点、重复值与空边界,并用 BinarySearchFunc 处理结构体字段排序。317 收藏 -
讲清 Go GODEBUG gocacheverify 如何绕过缓存命中、重建并比较旧新输出,配合 gocachehash、go clean -cache 和 -a 排查构建缓存一致性。313 收藏 -
Go build 出现疑似缓存未更新时,先确认 GOCACHE 与构建输入,再用 -a、go clean -cache、gocacheverify 和 gocachehash 分层定位,避免误删模块缓存。226 收藏